求表T中,概不符合条件A、B、C、D的记录集合,即符合条件A、B、C、D的集合的补集。
已知道
SELECT * FROM T WHERE 主键 NOT IN (SELECT 主键 FROM T WHERE A OR B OR C OR D)是可以达到目的的,但是这个SQL是建立在知道该表主键的前提下的。
能不能在不知道主键的情况下,只凭表名和条件,查出其补集呢?
谢谢大家!
已知道
SELECT * FROM T WHERE 主键 NOT IN (SELECT 主键 FROM T WHERE A OR B OR C OR D)是可以达到目的的,但是这个SQL是建立在知道该表主键的前提下的。
能不能在不知道主键的情况下,只凭表名和条件,查出其补集呢?
谢谢大家!
SELECT * FROM T WHERE not exists (SELECT * FROM T WHERE A OR B OR C OR D)这样行不行呢?
SELECT COL1,COL2,... FROM T WHERE
NOT EXISTS (SELECT 1 FROM A WHERE COL1=T.COL1 AND COL2=T.COL2 AND ...)
AND NOT EXISTS (SELECT 1 FROM B WHERE COL1=T.COL1 AND COL2=T.COL2 AND ...)
AND NOT EXISTS (SELECT 1 FROM C WHERE COL1=T.COL1 AND COL2=T.COL2 AND ...)
AND NOT EXISTS (SELECT 1 FROM D WHERE COL1=T.COL1 AND COL2=T.COL2 AND ...)
SELECT * FROM T WHERE NOT EXISTS (SELECT 1 FROM T WHERE A OR B OR C OR D)
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281