【问题标题】:Syntax error - postgresql语法错误 - postgresql
【发布时间】:2016-05-10 20:40:27
【问题描述】:

你能帮我解决以下语法错误吗

列引用“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

【问题讨论】:

  • 错误信息有什么不清楚的地方?

标签: postgresql postgresql-9.1 postgresql-9.2


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    因此您需要指定 table1.id 或 table2.id 并适当地限定字段。

    【讨论】:

      【解决方案3】:

      table1 和 table2 两个表都具有相同的列名“id”。如果您使用两个表运行 select 语句,则会混淆要显示哪个表“id”。在这种情况下会出现模棱两可的错误。 为了更好地克服这个问题,可以使用别名或 tablename.columnname (即你想要那个 tablename.columnname 的表列)

      【讨论】:

        猜你喜欢
        • 2016-07-03
        • 2010-10-22
        • 2021-09-03
        • 1970-01-01
        • 2017-12-11
        • 2010-12-26
        • 2018-04-05
        • 1970-01-01
        • 2014-03-13
        相关资源
        最近更新 更多