1. ホーム
  2. mysql

[解決済み】1052:フィールドリストの列「id」が曖昧である

2022-01-26 05:58:59

質問

2つのテーブルがあります。 tbl_namestbl_section の両方を持つ id フィールドが含まれています。を選択するにはどうすればよいのでしょうか? id というエラーがいつも発生します。

1052: Column 'id' in field list is ambiguous

これが私のクエリです。

SELECT id, name, section
  FROM tbl_names, tbl_section 
 WHERE tbl_names.id = tbl_section.id

すべてのフィールドを選択すれば、エラーを回避することができるのですが。しかし、それではパフォーマンスの無駄になってしまいます。どうしたらいいでしょうか?

解決方法は?

SQL では、完全なテーブル名のいずれかをプレフィックスとして参照することで、カラムを修飾することができます。

SELECT tbl_names.id, tbl_section.id, name, section
  FROM tbl_names
  JOIN tbl_section ON tbl_section.id = tbl_names.id 

...またはテーブルのエイリアス。

SELECT n.id, s.id, n.name, s.section
  FROM tbl_names n
  JOIN tbl_section s ON s.id = n.id 

テーブル・エイリアスは推奨される方法です -- なぜ必要以上にタイプする必要があるのでしょうか?

なぜこれらのクエリは異なって見えるのでしょうか?

次に、私の回答はANSI-92 JOIN構文を使っています(あなたの回答はANSI-89です)。 これらは同じように動作しますが、ANSI-89構文はOUTER結合(RIGHT、LEFT、FULL)をサポートしていません。 ANSI-89構文は非推奨と考えるべきで、それを補強するためにANSI-89構文に投票しない人がSOにたくさんいます。 以下はその例です。 詳しくは、この質問をご覧ください。 .