ホームページ > データベース > mysql チュートリアル > MySQL UPDATEクエリの「Table Specified Twice」エラーを修正する方法?

MySQL UPDATEクエリの「Table Specified Twice」エラーを修正する方法?

Susan Sarandon
リリース: 2024-11-12 06:46:01
オリジナル
992 人が閲覧しました

How to Fix

テーブルが 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート