postgresql SQL列引用“id”不明确

z9zf31ra  于 2023-06-22  发布在  PostgreSQL
关注(0)|答案(5)|浏览(202)

我尝试了以下选择:

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,它也工作。
有什么建议吗?

uklbhaso

uklbhaso1#

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

pbossiut2#

我假设你的p2vg表也有一个id字段,在这种情况下,postgres无法找到SELECT中的id是指vg还是p2vg。
你应该使用SELECT(vg.id,vg.name)来消除歧义

rmbxnbpk

rmbxnbpk3#

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;
kyks70gy

kyks70gy4#

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;
xesrikrc

xesrikrc5#

作为补充说明:我在使用CTE进行连接时遇到了这个错误,导致了歧义。我使用FROM中的CTE和别名,尽管用CTE的别名作为SELECT艾德列的前缀,postgres仍然会在前缀列调用时产生这个错误。这是一个有点棘手的发现,因为我的查询很长。
希望它能帮助到外面的人。

相关问题