我正在尝试使用WITH运算符编写PostgreSQL查询,如下所示:
WITH team_people AS (
SELECT DISTINCT person_id FROM team_person WHERE team_id = 558
)
SELECT p.first, p.email
FROM person p
WHERE ident IN team_people
我在WHERE行上收到错误,指出“team_people处或附近的语法错误”。
我在这里使用“WITH”,因为这将是一个更大的查询,我需要多次使用team_people数字集。我对这种语法搞砸了什么?
服务器版本为9.1.18
答案 0 :(得分:0)
通过创建一个小的内部SELECT语句,您需要在IN部分的列选择中明确:
... WHERE ident IN (SELECT person_id FROM team_people)
例如,请参阅文档中的第一个代码段:http://www.postgresql.org/docs/8.4/static/queries-with.html
您的另一个选择是使用加入:
... INNER JOIN team_people ON ident=person_id
原始代码不起作用的原因是team_people
不被视为包含单个列的结果,而是作为临时表发生在如果team_people是一个表,那么您可以清楚地看到您使用的语法无效。