ホームページ >データベース >mysql チュートリアル >SQL の「列参照 'id' があいまいです」エラーを解決するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。