现有如下两张表(共3列,3列合为一个主键):
表1: 表2:
-------------- --------------
列1 列2 列3 列1 列2 列3
-------------- --------------
1 a1 b1 1 a1 b2
1 a2 b2 1 a2 b2
2 a6 b6 3 a6 b6
现在希望得到表1中有的但是表2中没有的记录,即获得两表差集,该如何获取呢?
即得出来的结果应该是
--------------
列1 列2 列3
--------------
1 a1 b1
2 a6 b6
在sql 2000中可以这样实现:
select * from 表1 as t1
where not exists (select * from 表2 as t2 where t1.col1 = t2.col1 and t1.col2 = t2.col2 and t1.col3 = t2.col3)
在sql 2005中可以这样实现,因为2005中多了except(SQL 2000没有),就简单很多了:
select * from 表1
except
select * from 表2