テーブルが 2 回指定されている: MySQL での更新の競合を解決する
更新のターゲットと別のターゲットの両方として表示されるテーブルを更新しようとしたときデータ ソースを使用すると、MySQL で「テーブル 'table_name' が 2 回指定されています。'UPDATE' のターゲットとして、およびデータの別個のソースとして指定されています。」というエラーが発生する場合があります。この問題は、クエリ内で同じテーブルを複数回参照すると発生します。
具体的には、このエラー メッセージは、マネージャー テーブルが UPDATE 操作のターゲット テーブルと選択用のデータ ソースの両方として使用されていることを示します。 Branch_master テーブルのデータ。この二重参照は MySQL を混乱させる可能性があります。
解決策
解決策は、データ ソース内のテーブルを派生テーブルに分離することです。派生テーブルは、元のテーブルのデータを保持するために飛んでください。こうすることで、クエリのあいまいさを避けることができます。
クエリ内の次の行を次のように置き換えます:
FROM manager AS m2
FROM (select * from manager) AS m2
これにより、元のマネージャー テーブルからのすべてのデータが含まれる m2 という派生テーブル。
更新されたクエリ
テーブルの競合エラーを解決する更新されたクエリは次のとおりです:
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' ) );
派生テーブルを使用すると、クエリ内でマネージャー テーブルが 1 回だけ参照されるようになり、MySQL で「テーブルが 2 回指定されました」エラーが発生するのを防ぐことができます。
以上がMySQL UPDATEクエリの「Table Specified Twice」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。