Postgresql列引用“id”是不明确的

时间:2012-03-22 11:09:40

标签: sql postgresql select

我尝试了以下选择:

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”不明确。

事情是,如果我尝试相同的选择,但我只要求(名称),而不是id,它也有效。 我是新手,也许我错过了一些明显的东西。有什么建议?

感谢。

5 个答案:

答案 0 :(得分:52)

您需要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;

答案 1 :(得分:5)

我认为你的p2vg表还有一个id字段,在这种情况下,如果SELECT中的id引用vg或p2vg,则postgres无法找到。

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

答案 2 :(得分: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;

答案 3 :(得分:0)

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;

答案 4 :(得分:0)

在 Postgresql 中,您可以只使用一个表和任何其他您想要的列。

Select "table_a"*,"table_b" as "table_bId" From "table_a" join "table_b" on "table_a"."Id" = "table_b"."table_aId"