例如,我有一个表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'))
我该怎么做?
答案 0 :(得分:8)
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')