您能否帮我解决以下语法错误
列参考" 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,
答案 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)