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;

 
分类: SQL Server
标签: SQL Server , 数据库

posted on 2025-04-21 16:46  漫思  阅读(68)  评论(0)    收藏  举报

导航