ホームページ >データベース >mysql チュートリアル >サブクエリを使用してテーブルを更新すると、MySQL が「Table Specified Twice」エラーをスローするのはなぜですか?
MySQL エラー: UPDATE と Source でテーブルが 2 回指定されています
提供された SQL クエリを使用してマネージャー テーブルを更新しようとすると、MySQL でエラーが発生します。エラー: 「テーブル 'm1' が 2 回指定されています。両方とも 'UPDATE' のターゲットとして、およびデータの別個のソースとして指定されています。」このエラーは、サブクエリ内でテーブル マネージャーが 2 回参照されているために発生します。
この問題は、派生テーブルから選択するようにサブクエリを変更することで解決できます。エイリアス m2 を直接使用する代わりに、クエリでは SELECT ステートメントを使用して一時テーブルを作成し、その一時テーブルから選択する必要があります。以下の変更されたクエリはこれを実現します。
UPDATE manager SET status = 'Y' WHERE branch_id IN ( SELECT branch_id FROM (SELECT * FROM manager) AS m2 WHERE (branch_id, year) IN ( SELECT branch_id, year FROM branch_master WHERE type = 'finance' ) );
派生テーブルを使用することにより、MySQL は UPDATE ステートメントで使用されるマネージャー テーブルとサブクエリで参照されるマネージャー テーブルを適切に区別できます。これにより、エラー メッセージの原因となった混乱が解消されます。
以上がサブクエリを使用してテーブルを更新すると、MySQL が「Table Specified Twice」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。