ホームページ >データベース >mysql チュートリアル >サブクエリを使用してテーブルを更新すると、MySQL がエラー 1093 をスローするのはなぜですか?

サブクエリを使用してテーブルを更新すると、MySQL がエラー 1093 をスローするのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-22 00:11:23522ブラウズ

Why Does MySQL Throw Error 1093 When Updating a Table Using a Subquery?

MySQL エラー 1093: サブクエリでのターゲット テーブルの更新

MySQL で次のクエリを実行しようとしたとき:

UPDATE giveaways SET winner = '1' WHERE ID = (SELECT MAX(ID) FROM giveaways)

次のような問題が発生する可能性がありますerror:

#1093 - You can't specify target table 'giveaways' for update in FROM clause

このエラーは、MySQL が WHERE 句内のサブクエリで UPDATE ステートメント (ギブアウェイ) のターゲット テーブルを使用することを許可していないために発生します。

Adapting参考記事の解決策

この問題を解決するには、記事で提供されている解決策を適用してください。ネストされたサブクエリを使用して参照されます。更新されたクエリは次のとおりです。

UPDATE giveaways SET winner='1'
WHERE Id = (SELECT Id FROM (SELECT MAX(Id) AS id FROM giveaways) AS t)

このクエリは、ギフト テーブルからサブクエリ (t) として最大の ID 値を効果的に選択し、その値を使用して外側のクエリの勝者列を更新します。

サブクエリをネストすると、サブクエリの FROM 句でターゲット テーブル (特典) を指定することがなくなり、エラー。

以上がサブクエリを使用してテーブルを更新すると、MySQL がエラー 1093 をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。