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.
,您使用的语法将不起作用
我正在尝试使用 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.