EXCEPT 返回两个结果集的差(即从左查询中返回右查询没有找到的所有非重复值)。
INTERSECT 返回 两个结果集的交集(即两个查询都返回的所有非重复值)。
限制条件
- (1)所有查询中的列数和列的顺序必须相同。
- (2)比较的两个查询结果集中的列数据类型可以不同但必须兼容。
- (3)比较的两个查询结果集中不能包含不可比较的数据类型(xml、text、ntext、image 或非二进制 CLR 用户定义类型)的列。
- (4)返回的结果集的列名与操作数左侧的查询返回的列名相同。ORDER BY 子句中的列名或别名必须引用左侧查询返回的列名。
- (5)不能与 COMPUTE 和 COMPUTE BY 子句一起使用。
- (6)通过比较行来确定非重复值时,两个 NULL 值被视为相等。(EXCEPT 或 INTERSECT 返回的结果集中的任何列的为空性与操作数左侧的查询返回的对应列的为空性相同。)
举例:
Table A Table B
NULL | NULL |
NULL | 2 |
1 | 3 |
1 | 4 |
2 | 5 |
3 | 5 |
4 | |
5 |
A:(SELECT * FROM TableA) EXCEPT (SELECT * FROM TableB)
结果: 1
(1 row(s) affected)
B: SELECT * FROM TableA INTERSECT SELECT * FROM TableB
结果:2
3
4
5
(4 row(s) affected)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2063625/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15498/viewspace-2063625/