ホームページ >データベース >mysql チュートリアル >SQL の「列参照 'id' があいまいです」エラーを解決するにはどうすればよいですか?

SQL の「列参照 'id' があいまいです」エラーを解決するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-18 07:36:08825ブラウズ

How to Resolve SQL's

SQL の「あいまいな列参照」エラーの解決: 'id' 列が重複する場合

共通の列名 (ユビキタスな "id" 列など) を持つ複数のテーブルを含む SELECT クエリを構築する場合、恐ろしい「列参照 'id' があいまいです」エラーが発生する可能性があります。 これは、どのテーブルの "id" 列を取得しようとしているのか SQL が認識していないために発生します。

解決策は簡単です。列名を常にそれぞれのテーブルの別名または完全なテーブル名で修飾します。

たとえば、クエリが v_groups (vg というエイリアス) と people2v_groups (p2vg というエイリアス) を結合し、どちらも "id" 列を含む場合、あいまいなクエリは次のようになります。

<code class="language-sql">SELECT (id, name) -- Ambiguous!
FROM v_groups vg
INNER JOIN people2v_groups p2vg
  ON vg.id = p2vg.v_group_id
WHERE p2vg.people_id = 0;</code>

は、「id」列のテーブルソースを明示的に指定するように書き換える必要があります:

<code class="language-sql">SELECT (vg.id, name) -- Unambiguous!
FROM v_groups vg
INNER JOIN people2v_groups p2vg
  ON vg.id = p2vg.v_group_id
WHERE p2vg.people_id = 0;</code>

vg.id を使用することで、v_groups テーブルから「id」が必要であることを明確に示します。 これによりあいまいさがなくなり、クエリが正しく実行されるようになります。

要するに: 列名を共有する複数のテーブルを扱うときは、曖昧さを避け、正確なクエリ結果を保証するために、必ず列名の前に対応するテーブルの別名 (または完全なテーブル名) を付けてください。

以上がSQL の「列参照 'id' があいまいです」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。