※ 引述《bestbestbest (思维)》之铭言:
: 资料表:
: 集会事件(事件编号,事件地点,开始日期,结束日期,估计人数,判定违法)
: 涉案者(涉案者号,姓名,事件编号,移送日期)
: 问题:
: 请找出在数据库中参与了每一个被判定违法集会的人(列出涉案者号,姓名)
: 这题应该会使用到NOT EXISTS,想请问上面这题如何解答?
: 如果不使用NOT EXISTS解的话有其他方式解吗?
等同找出所有不存在一个违法集会是没有参与的人
不是很确定内层的NOT EXISTS是不是这样写 有错烦请指正
select P1.涉案者号,P1.姓名
from 涉案者 P1
where NOT EXISTS (
select *
from 集会事件 E
where 判定违法=是 AND
NOT EXISTS(
select *
from 涉案者 P2
where E.事件编号=P2.事件编号 and P1.涉案者号=P2.涉案者号
)
)
记得老师说过NOT EXISTS写得出的用NOT IN一定也可以
不过用NOT EXISTS就已经没把握是对的所以就不献丑了...