Postgres-在返回多行之后选择一行

问题描述 投票:0回答:1

我的查询是

DELETE FROM event_comments WHERE thread_id = '1BZbAR'
returning parent_id, comment_id, thread_id

它返回3行

null | 1 | 1BZbAR
1    | 2 | 1BZbAR
2    | 3 | 1BZbAR

如何选择parent_id为空的行?

我尝试过:

DELETE FROM event_comments WHERE thread_id = '1BZbAR'
returning MIN(parent_id), comment_id, thread_id
DELETE FROM event_comments WHERE thread_id = '1BZbAR'
returning HAVING parent_id is null, comment_id, thread_id
DELETE FROM event_comments WHERE thread_id = '1BZbAR'
returning parent_id, comment_id, thread_id as t
SELECT * FROM t WHERE parent_id is null

但是它们都给了他们语法错误。我该怎么办?

sql postgresql
1个回答
2
投票

您应该能够对当前的delete语句进行子查询,或将其放入CTE中并进行查询:

WITH cte AS (
    DELETE
    FROM event_comments
    WHERE thread_id = '1BZbAR'
    RETURNING parent_id, comment_id, thread_id
)

SELECT parent_id, comment_id, thread_id
FROM cte
WHERE parent_id IS NULL;
© www.soinside.com 2019 - 2024. All rights reserved.