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

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

Mary-Kate Olsen
リリース: 2024-12-22 00:11:23
オリジナル
625 人が閲覧しました

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 までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート