7.16 SQL Server EXCEPT(补集)

SQL Server EXCEPT

简介

SQL Server EXCEPT比较两个查询的结果集,并返回第一个查询中未出现在第二个查询中行。换句话说,EXCEPT返回的是query_1-query_2

语法:

query_1
EXCEPT
query_2

此语法中:

  • 两个查询中列的数量和顺序必须相同。
  • 对应列的数据类型必须相同或兼容。

下图显示了两个结果集T1和T2的除运算:

图中:

  • T1包括1、2和3。
  • T2包括2、3和4。

T1和T2的EXCEPT返回1,这是T1结果集中不出现在T2结果集中的不同行。

示例

有如下产品和订单项表:

A)EXCEPT简单示例

使用EXCEPT运算符查找没有销售的产品:

SELECT
    product_id
FROM
    production.products
EXCEPT
SELECT
    product_id
FROM
    sales.order_items;

本例中,第一个查询返回所有产品。第二个查询返回销售过的产品。因此,结果仅包括没有销售的产品。

B)EXCEPT与ORDER BY示例

若要对EXCEPT的结果排序,还是直接在最后一个查询中添加ORDER BY子句。

例如,以下示例查找没有销售的产品,并按其id升序对产品进行排序:

SELECT
    product_id
FROM
    production.products
EXCEPT
SELECT
    product_id
FROM
    sales.order_items
ORDER BY 
	product_id;

posted @ 2023-01-29 11:24  平元兄  阅读(532)  评论(0编辑  收藏  举报