SQL Server 关键字

SQL Server (Transact-SQL) EXCEPT 关键字用于比较两个或多个 SELECT 语句。它返回第一个结果集中未出现在第二个结果集中的所有记录。

使用 EXCEPT 关键字时,必须满足以下条件:

  • 每个 SELECT 语句中的列数应该相等。
  • 每个 SELECT 语句中的列的数据类型应该匹配。
  • 每个 SELECT 语句中的列顺序应该匹配。
  • SQL Server EXCEPT 关键字

    语法

    在 SQL Server (Transact-SQL) 中使用 EXCEPT 关键字的语法如下:

    SELECT column1, column2, ... FROM table1
    EXCEPT
    SELECT column1, column2, ... FROM table2 

    示例:

    考虑名为Product和Inventory 的数据库表,包含以下记录:

    表 1:Product 表

    NameBrandPriceQuantity
    AppleDelicious1.540
    AppleHarvest1.650
    OrangeDelicious2.040
    OrangeHarvest1.950
    WatermelonLocalFarm4.050
    MangoLocalFarm3.560

    表2:Inventory 表

    NameBrandPriceQuantity
    AppleDelicious1.520
    OrangeLocalFarm2.040
    WatermelonLocalFarm4.020

    使用EXCEPT关键字:要获取两个记录集中都不存在的Name列的记录,可以使用以下查询:

    SELECT Name FROM Product
    EXCEPT
    SELECT Name FROM Inventory
    ORDER BY Name; 

    这将产生如下所示的结果:

    Name
    Mango

    在 WHERE 子句中使用 EXCEPT 关键字: 获取 Name 的记录 列在指定条件的两个记录集中都不存在,可以使用以下查询:

    SELECT Name FROM Product
    EXCEPT
    SELECT Name FROM Inventory
    WHERE Quantity < 30
    ORDER BY Name; 

    这将产生以下结果:

    Name
    Mango
    Orange

    在多列中使用 EXCEPT 关键字: 获取 Name 和 Brand 列中不存在的记录存在于两个记录集中,可以使用以下查询:

    SELECT Name, Brand FROM Product
    EXCEPT
    SELECT Name, Brand FROM Inventory
    ORDER BY Name; 

    这将产生以下结果:

    NameBrand
    AppleHarvest
    MangoLocalFarm
    OrangeDelicious
    OrangeHarvest