日期:2014-05-17  浏览次数:20665 次

NOT EXISTS问题
查找参加了职工号为‘1001’的职工所参加的全部社会团体的职工号

SELECT 职工号 FROM 职工 WHERE NOT EXISTS 
(SELECT * FROM 参加 参加1 WHERE 参加1.职工号='1001' AND NOT EXISTS
(SELECT * FROM 参加 参加2 WHERE 参加2.职工号=职工.职工号 AND 参加2.编号=参加1.编号 ))


求解这段语句的运作步骤

------解决方案--------------------
這個好解,三個標準SQL的邏輯順序,如下.
PS:樓主的中英SQL好難看

1.FROM 职工
2.WHERE NOT EXISTS 
(SELECT * FROM 参加 参加1 WHERE 参加1.职工号='1001' AND NOT EXISTS
(SELECT * FROM 参加 参加2 WHERE 参加2.职工号=职工.职工号 AND 参加2.编号=参加1.编号 ))
2.1 FROM 参加 参加1
2.2 WHERE 参加1.职工号='1001' AND NOT EXISTS
(SELECT * FROM 参加 参加2 WHERE 参加2.职工号=职工.职工号 AND 参加2.编号=参加1.编号 ))
2.2.1 FROM 参加 参加2
2.2.2 WHERE 参加2.职工号=职工.职工号 AND 参加2.编号=参加1.编号
2.2.3 SELECT *
2.3 SELECT *
3.SELECT 职工号 
------解决方案--------------------
参加1中的职工号等于1001,且在参加2中也不存在此职工号,且编号也不相等