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

我尝试了以下选项:

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也,它的工作。

有什么建议吗?

218326 次浏览

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;

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

您应该使用 SELECT(vg.id,vg.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;
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;

作为附加说明: 我在使用 CTE 进行连接时得到了这个错误,导致了模糊性。我在 FROM中使用带别名的 CTE,尽管在 SELECTed 列前面加上了 CTE 的别名,postgres 仍然会在前缀列调用上产生这个错误。由于我的问题很长,所以发现起来有点棘手。

希望能帮到别人。