ホームページ >データベース >mysql チュートリアル >サブクエリを使用してテーブルを更新すると、MySQL がエラー 1093 をスローするのはなぜですか?
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 サイトの他の関連記事を参照してください。