我尝试了以下选择:
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,它也工作。有什么建议吗?
id
SELECT
name
uklbhaso1#
您需要在SELECT部分(可能是(vg.id, name))中输入表名/别名:
(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;
pbossiut2#
我假设你的p2vg表也有一个id字段,在这种情况下,postgres无法找到SELECT中的id是指vg还是p2vg。你应该使用SELECT(vg.id,vg.name)来消除歧义
SELECT(vg.id,vg.name)
rmbxnbpk3#
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;
xesrikrc5#
作为补充说明:我在使用CTE进行连接时遇到了这个错误,导致了歧义。我使用FROM中的CTE和别名,尽管用CTE的别名作为SELECT艾德列的前缀,postgres仍然会在前缀列调用时产生这个错误。这是一个有点棘手的发现,因为我的查询很长。希望它能帮助到外面的人。
FROM
5条答案
按热度按时间uklbhaso1#
您需要在
SELECT
部分(可能是(vg.id, name)
)中输入表名/别名:pbossiut2#
我假设你的p2vg表也有一个id字段,在这种情况下,postgres无法找到
SELECT
中的id是指vg还是p2vg。你应该使用
SELECT(vg.id,vg.name)
来消除歧义rmbxnbpk3#
kyks70gy4#
xesrikrc5#
作为补充说明:我在使用CTE进行连接时遇到了这个错误,导致了歧义。我使用
FROM
中的CTE和别名,尽管用CTE的别名作为SELECT
艾德列的前缀,postgres仍然会在前缀列调用时产生这个错误。这是一个有点棘手的发现,因为我的查询很长。希望它能帮助到外面的人。