パーマリンク | 2008年01月15日 12:09
テーブルを結合して出力する場合、どちらのテーブルのカラムか指定しないとエラーになる。
| id | name |
|---|---|
| 1 | |
| 2 | yahoo |
| 3 | MSN |
| id | url |
|---|---|
| 1 | http://www.google.co.jp/ |
| 2 | http://www.yahoo.co.jp/ |
| 3 | http://jp.msn.com/ |
「Column 'カラム名' in field list is ambiguous」エラーとなるSQL
SELECT
id, name, url
FROM test1
INNER JOIN test2 ON test1.id = test2.id
なぜエラーになるのかは下記SQLを実行するとわかりますが「id」が重複していてどちらの「id」なのかわからないので。
SELECT
*
FROM test1
INNER JOIN test2 ON test1.id = test2.id
上記を実行した場合の結果
| id | name | id | url |
|---|---|---|---|
| 1 | 1 | http://www.google.co.jp/ | |
| 2 | yahoo | 2 | http://www.yahoo.co.jp/ |
| 3 | MSN | 3 | http://jp.msn.com/ |
確かにIDが重複してますね。エラーが出ないようにするにはどちらの「ID」かを指定してあげればよい。
SELECT
test1.id, name, url
FROM test1
INNER JOIN test2 ON test1.id = test2.id
別名設定前でも大丈夫なかんじ。
SELECT
a.id, name, url
FROM test1 a
INNER JOIN test2 b ON a.id = b.id
Copyright 2006-2008 KANTENNA.COM Reserved.