语法错误 - postgresql

时间:2016-05-10 20:40:27

标签: postgresql postgresql-9.1 postgresql-9.2

您能否帮我解决以下语法错误

列参考" 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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

作为上述答案的摘要以及为什么需要它(你应该接受Anonymous-SOS的答案,而不是这个答案,因为这补充了它。)

当PostgreSQL解析查询时,它注意到这里的id可以引用table1.id或table2.id,因此它会引发错误。虽然可能会注意到在这种情况下这两个值必然相同,但现在更好地获取错误,而不是在修改查询时返回歧义。

所以你需要指定table1.id或table2.id并适当地限定字段。

答案 2 :(得分:0)

table1和table2两个表具有相同的列名&#34; id&#34;。如果你使用两个表运行select语句,那么会混淆哪个表&#34; id&#34;要显示。在这种情况下会出现模糊错误。 要更好地克服这一点,请使用别名或tablename.columnname (即哪个表列你想要tablename.columnname)