sql except用法
sql except用法一、except语法
{ <query_specification> | ( <query_expression> ) }
{ EXCEPT }
{ <query_specification> | ( <query_expression> ) }
二、except形象图
阴影部分就是结果集
三、SQL Server中使用EXCEPT进行集合运算时,需注意以下几点:
1、如果EXCEPT操作符左边和右边的查询返回的可比较列的数据类型是具有不同排序规则的字符数据类型,则根据排序规则优先级的规则执行所需的比较。
2、通过比较行来确定非重复值时,两个NULL值被视为相等。
3、EXCEPT返回的结果集的列名与操作数左侧的查询返回的列名相同。
4、EXCEPT返回的结果集中的任何列的为空性(是否可以为空)与操作数左侧的查询返回的对应列的为空性相同。
四、如果EXCEPT与表达式中的其他运算符一起使用,则按以下优先顺序对其进行运算:
1、括号中的表达式。
2、INTERSECT操作符。
3、基于在表达式中的位置从左到右求值的EXCEPT和UNION运算。
五、SQL Server中EXCEPT使用示例
USE TSQLFundamentals2008;
GO
-- EXCEPT差集运算
-- 以下代码返回属于职员地址,但不属于客户地址的不同地址
SELECT country,region,city FROM HR.Employees
EXCEPT
SELECT country,region,city FROM Sales.Customers;
USE Library
SELECT * FROM TableA
EXCEPT
SELECT * FROM TableB
INTERSECT
SELECT * FROM TableC
说明:首先执行了tableB表和tableC表的交运算,而后再与tableA表进行差运算。如果要先执行tableA表与tableB表的差运算,而后再与TalbeC表进行交运算,则必须使用括号改变运算的先后顺序,代码如下:
USE Library
(SELECT * FROM TableA
EXCEPT
SELECT * FROM TableB)
INTERSECT
SELECT * FROM TableC