PostgreSQL 'with' 和 'IN' 查询不喜欢对方

PostgreSQL 'with' and 'IN' query not liking each other

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

我在 "syntax error at or near team_people" 的 WHERE 行上收到错误消息。

我在这里使用 "WITH",因为这将是一个更大的查询,我需要在其中多次使用 team_people 组数字。我在该语法上搞砸了什么?

服务器版本为9.1.18

您需要在 IN 部分的列选择中通过制作一个小的内部 SELECT 语句来明确:

... 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 不被视为包含单个列的结果,而是作为 临时 table 恰好只有一个列,很明显,如果 team_people 是 table.

,您使用的语法将不起作用