语法:
{ <query_specification> | ( <query_expression> ) } { EXCEPT | INTERSECT } { <query_specification> | ( <query_expression> ) }
说明:
比较两个查询的结果,返回非重复值。
EXCEPT 从左查询中返回右查询没有找到的所有非重复值。(如图一的蓝色部分)
INTERSECT 返回 INTERSECT 操作数左右两边的两个查询都返回的所有非重复值。(如图二的中间红色部分)
图一:
图二:
注意事项:
查询规范或表达式不能返回 xml、text、ntext、image 或非二进制 CLR 用户定义类型列,因为这些数据类型不可比较。
所有查询中的列数和列的顺序必须相同。
数据类型必须兼容。
通过比较行来确定非重复值时,两个 NULL 值被视为相等。
EXCEPT 或 INTERSECT 返回的结果集的列名与操作数左侧的查询返回的列名相同。
示例如下:
A表 | B表 |
Field_A (int) | Field_B (int) |
1 | 1 |
2 | 2 |
3 | 2 |
3 | 4 |
4 | NULL |
NULL | 5 |
查询语句一:
select * from A except select * from B
结果:
3
查询语句二:
select * from A intersect select * from B
结果:
NULL 1 2 4