MariaDB 关键字

MariaDB EXCEPT 关键字用于比较两个或多个 SELECT 的结果集声明。它返回第一个结果集中未出现在第二个结果集中的所有记录。

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

  • 每个 SELECT 语句中的列数应该相等。
  • 每个 SELECT 语句中的列的数据类型应该匹配。
  • 每个 SELECT 语句中的列顺序应该匹配。

MariaDB EXCEPT关键字

语法

在 MariaDB 中使用 EXCEPT 关键字的语法如下:

SELECT column1, column2, ... FROM table1
EXCEPT [ALL | DISTINCT]
SELECT column1, column2, ... FROM table2 
注意: 默认情况下,EXCEPT 子句仅采用不同的值。要选择重复值,可以使用 EXCEPT ALL 子句。要强制此子句选择不同的值,可以使用 EXCEPT DISTINCT 子句。

示例:

考虑名为 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