例如,我有一个表Person
,每个条目都有一个ID,我有一个表PersonEvent
,记录personID
每个人在一个事件.
如果PersonEvent
事件中不包含任何行,则Person
表中的每个人都会参加.但是,如果表中有条目,则PersonEvent
只有那些人参加了此活动.
我想做一个查询,例如:
SELECT *
FROM Person p
WHERE ((SELECT COUNT(*)
FROM PersonEvent pe
WHERE pe.personID = p.ID
AND pe.eventID = '290') = 0
OR EXISTS
(SELECT *
FROM PersonEvent pe
WHERE pe.personID = p.ID
AND pe.eventID = '290'))
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
SELECT *
FROM Person p
WHERE NOT EXISTS ( -- not a single person for the event
SELECT *
FROM PersonEvent
WHERE eventID = '290')
OR EXISTS ( -- the person for the event
SELECT *
FROM PersonEvent pe
WHERE pe.personID = p.ID AND pe.eventID = '290')
Run Code Online (Sandbox Code Playgroud)