#原因
INNER JOINでテーブル結合する時に、テーブル内で同じカラムがあった場合、select等でそのカラムがどのテーブルに存在するものか指定していないとエラーメッセージ「Column 'カラム名' in field list is ambiguous」が表示される。
原因は単純にカラムが重複してしまい、どのテーブルを参照すればいいのか分からないから。
select id,status,
from テーブルA INNER JOIN テーブルB on テーブルA.カラム① = テーブルB.カラム①
where id is not null and status = 1
上記で実行すると→Column 'id' in field list is ambiguous
※カラム①のカラム名が同じ意味合いなのにテーブルで違う名前の場合もあるが、それはそれで、そのまま書けばOK
###テーブルA
id | status | Category |
---|---|---|
1 | 1 | A |
2 | 1 | A |
3 | 3 | B |
4 | 4 | C |
5 | 1 | C |
null | 2 | C |
###テーブルB
id | status | type |
---|---|---|
1 | 1 | GJ |
2 | 1 | Go |
3 | 0 | Go |
4 | 0 | Go |
5 | 0 | GJ |
null | 0 | GJ |
テーブルAとテーブルBのidとstatusが重複してる
#解決
SQL文内の重複するカラム全てにどのテーブルのカラムなのか追記する。
select id,status,
from テーブルA INNER JOIN テーブルB on テーブルA.カラム① = テーブルB.カラム①
where テーブルA.id is not null and テーブルB.status = 1
以上。