PostgreSQL'与'和'IN'查询不喜欢彼此

时间:2015-08-07 22:18:29

标签: psql

我正在尝试使用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

1 个答案:

答案 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是一个表,那么您可以清楚地看到您使用的语法无效。