【问题标题】:Postgresql column reference "id" is ambiguousPostgresql 列引用“id”不明确
【发布时间】:2012-04-06 22:42:05
【问题描述】:

我尝试了以下选择:

SELECT (id,name) FROM v_groups vg 
inner join people2v_groups p2vg on vg.id = p2vg.v_group_id
where p2vg.people_id =0;

我得到以下错误列引用 id 不明确。

如果我尝试相同的SELECT,但我只要求name,而不是id,它也有效。 我对此很陌生,也许我遗漏了一些明显的东西。有什么建议吗?

谢谢。

【问题讨论】:

  • 一旦你的语句中有多个表,你应该总是在你的列名前加上相应的表别名。这样您就永远不会收到此错误。
  • 当两个表中的列名相同时,实际上会发生此问题。其中 = 可以解决这个问题。

标签: sql postgresql select


【解决方案1】:

您需要SELECT 部分中的表名/别名(可能是(vg.id, name)):

SELECT (vg.id, name) FROM v_groups vg 
inner join people2v_groups p2vg on vg.id = p2vg.v_group_id
where p2vg.people_id =0;

【讨论】:

    【解决方案2】:

    我想你的 p2vg 表也有一个 id 字段,在这种情况下,postgres 无法找到 SELECT 中的 id 是指 vg 还是 p2vg。

    您应该使用SELECT(vg.id,vg.name) 来消除歧义

    【讨论】:

    • 是的,事实上 id 字段是重复的。
    【解决方案3】:
    SELECT (vg.id, name) FROM v_groups vg 
    INNER JOIN people2v_groups p2vg ON vg.id = p2vg.v_group_id
    WHERE p2vg.people_id = 0;
    

    【讨论】:

      【解决方案4】:
      SELECT vg.id, 
             vg.name
        FROM v_groups vg INNER JOIN  
             people2v_groups p2vg ON vg.id = p2vg.v_group_id
       WHERE p2vg.people_id = 0;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-26
        • 2023-01-18
        • 2021-01-08
        • 2021-12-14
        • 1970-01-01
        • 2020-12-08
        • 1970-01-01
        相关资源
        最近更新 更多