2016-05-10 78 views
1

你能幫我與下面的語法錯誤語法錯誤 - PostgreSQL的

列引用「ID」是不明確的是我得到的錯誤。

insert into table1 (id, name, type, version) 
select id, '<needs updating>' as name, 'external' as type, -1 as version 
from table2 
left outer join table1 
on table2.id = table1.id 
where table1.id is null 
group by table2.id, table1.name 


order by table2.id, table1.name 
+0

有什麼不清楚的錯誤消息? –

回答

2

修改select id,select table2.id,select table1.id,

0

如上答案的摘要以及爲什麼需要它(你應該接受匿名-SOS的答案,而不是這一個BTW,因爲這種補充的話)。

當PostgreSQL解析查詢時,它會注意到這裏的id可能引用table1.id或table2.id,所以會引發錯誤。雖然有可能注意到在這種情況下兩個值必須相同,但現在可能更好地獲取錯誤,而不是在修改查詢時使歧義返回。

因此,您需要指定table1.id或table2.id並適當限定字段。

0

table1和table2兩個表具有相同的列名「id」。如果使用兩個表運行select語句,則會混淆顯示哪個表「id」。在這種情況下,會發生模糊錯誤。 要更好地使用別名或表名。列名 (即哪個表列需要該表名。列名)