您的位置:首页 > 数据库

sql里面EXCEPT、INTERSECT的区别

2017-01-16 17:08 239 查看
用法区别:

EXCEPT   返回两个结果集的差(从左查询中返回右查询没有找到的所有非重复的值);

INTERSECT  返回两个结果集的交集(返回两个查询结果里面所有非重复的值);

UNOIN  返回两个结果集的并集。

语法:

(select A,B from TAB_1)

{EXCEPT  / INTERSECT / UNOIN }

(select A,B from TAB_2)

限制条件:

1)所有查询中列数和列必须一致;

2)比较的两个列的数据类型可以不一样但是必须兼容;

3)比较的两个列不能包含不可比较的数据类型(xml、text、ntext、image 或非二进制 CLR 用户定义类型);

4)返回的结果集的列名与操作数左侧的查询返回的列名相同。ORDER BY 子句中的列名或别名必须引用左侧查询返回的列名。

5)不能与 COMPUTE 和 COMPUTE BY 子句一起使用。

6)通过比较行来确定非重复值时,两个 NULL 值被视为相等

与表达式里面其他运算符一起使用时的执行顺序:

1)括号里面的表达式;

2)INTERSECT操作数;

3)基于在表达式中的位置从左到右求值的 EXCEPT 和 UNION。

注意:

如果 EXCEPT 或 INTERSECT 用于比较两个以上的查询集,则数据类型转换是通过一次比较两个查询来确定的,并遵循前面提到的表达式求值规则。

举例:

create table T1(id int,mark char(2));

INSERT INTO T1 (ID, MARK) VALUES (1, null);

INSERT INTO T1 (ID, MARK) VALUES (2, null);

INSERT INTO T1 (ID, MARK) VALUES (3, '1 ');

INSERT INTO T1 (ID, MARK) VALUES (4, '3 ');

INSERT INTO T1 (ID, MARK) VALUES (5, '5 ');

INSERT INTO T1 (ID, MARK) VALUES (6, '6 ');

INSERT INTO T1 (ID, MARK) VALUES (7, '9 ');

create table T2(id int,mark char(2));

INSERT INTO T2 (ID, MARK) VALUES (1, null);

INSERT INTO T2 (ID, MARK) VALUES (2, '2 ');

INSERT INTO T2 (ID, MARK) VALUES (3, '3 ');

INSERT INTO T2 (ID, MARK) VALUES (4, '5 ');

INSERT INTO T2 (ID, MARK) VALUES (5, '6 ');

INSERT INTO T2 (ID, MARK) VALUES (6, '8 ');

T1 (MARK)                                                   T2(MARK)

NULL                                                            NULL

NULL                                                            2

1                                                                    3

3                                                                    5

5                                                                    6

6                                                                    8

9

 

(SELECT MARK FROM T1)  EXCEPT (SELECT MARK FROM T2) ;

结果  1,9

(SELECT MARK FROM T1)  INTERSECT (SELECT MARK FROM T2) ;

结果  3,5,6,(null)

(SELECT MARK FROM T1)  UNION (SELECT MARK FROM T2) ;

结果  1,2,3,5,6,8,9 ,(null)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: