ホームページ > データベース > mysql チュートリアル > MySQL UPDATE クエリで「テーブルが 2 回指定されています」エラーが発生するのはなぜですか?

MySQL UPDATE クエリで「テーブルが 2 回指定されています」エラーが発生するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-23 08:03:32
オリジナル
628 人が閲覧しました

Why Do I Get

エラー: 「テーブルが 2 回指定されています。'UPDATE' のターゲットとして、およびデータの別のソースとして指定されています。」

テーブルを作成し、それを同じクエリ内でデータ ソースとして参照すると、「テーブルが 2 回指定されています」というエラーが発生する場合があります。このエラーは、同じテーブルが UPDATE ステートメントのターゲットであり、更新条件を決定するために使用されるサブクエリ内で別のテーブルとして表示される場合に発生します。

このエラーを解決して目的のテーブルを正常に更新するには、次の手順に従ってください。手順:

  1. サブクエリの抽出: 原因となっている UPDATE ステートメント内のサブクエリを特定します。 問題。この例では、サブクエリは次のとおりです:
SELECT m2.branch_id FROM manager AS m2 WHERE (m2.branch_id, m2.year) IN (...)
ログイン後にコピー
  1. 派生テーブルの作成: サブクエリを別の SELECT ステートメントでラップし、それの別名。これにより、マネージャー テーブルを明示的に 2 回指定せずにサブクエリを参照できるようになります。
SELECT * FROM (SELECT m2.branch_id FROM manager AS m2 WHERE (m2.branch_id, m2.year) IN (...)) AS subquery
ログイン後にコピー
  1. 派生テーブルを使用します: 元のサブクエリを派生テーブルに置き換えます。 UPDATE ステートメント内。
UPDATE manager
SET status = 'Y'
WHERE branch_id IN (
    SELECT branch_id
    FROM subquery
);
ログイン後にコピー

派生テーブルを使用することで、マネージャー テーブルをターゲットとデータ ソースの両方として指定し、「テーブルが 2 回指定されています」エラーを解決します。この手法により、サブクエリが 1 回だけ参照されるようになり、UPDATE ステートメントが正常に実行されるようになります。

以上がMySQL UPDATE クエリで「テーブルが 2 回指定されています」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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