【发布时间】:2022-01-22 17:02:39
【问题描述】:
【问题讨论】:
标签: postgresql inner-join
【问题讨论】:
标签: postgresql inner-join
您可以在case 表达式上使用count 来检查表中有多少“已验证”或“已请求”值:
SELECT *
FROM documents i
JOIN (SELECT id
COUNT(CASE status WHEN 'VERIFIED' THEN 1 END) AS count_verified,
COUNT(CASE status WHEN 'REQUESTED' THEN 1 END) AS count_requested
FROM invites
GROUP BY id) i ON d.invite_id = i.id AND
count_verified > 0 AND
count_requested = 0
【讨论】:
我找到了一个带有 EXCEPT (MINUS) SQL 构造的解决方案
(SELECT invites.id, invites.invited_by FROM invites
INNER JOIN documents
ON invites.id=documents.invite_id
GROUP BY (invites.id)
)
EXCEPT
(SELECT invites.id, invites.invited_by FROM invites
INNER JOIN documents
ON invites.id=documents.invite_id
WHERE documents.status='REQUESTED'
GROUP BY (invites.id)
))
【讨论】: