SQL EXCEPT 操作符
在 SQL 中,EXCEPT
操作符用于从第一个查询结果中排除第二个查询结果中出现的行。换句话说,它返回第一个查询结果中存在但第二个查询结果中不存在的行。EXCEPT
操作符非常适合用于比较两个数据集并找出差异。
备注
EXCEPT
操作符在某些数据库系统中可能被称为 MINUS
,例如 Oracle 数据库。请根据你使用的数据库系统选择合适的操作符。
语法
EXCEPT
操作符的基本语法如下:
SELECT column1, column2, ...
FROM table1
EXCEPT
SELECT column1, column2, ...
FROM table2;
SELECT
语句中的列数和数据类型必须匹配。- 结果集将返回第一个查询中存在但第二个查询中不存在的行。
示例
假设我们有两个表:employees
和 former_employees
,分别存储当前员工和离职员工的信息。
-- employees 表
+----+----------+-----------+
| id | name | department|
+----+----------+-----------+
| 1 | Alice | HR |
| 2 | Bob | IT |
| 3 | Charlie | Sales |
+----+----------+-----------+
-- former_employees 表
+----+----------+-----------+
| id | name | department|
+----+----------+-----------+
| 1 | Alice | HR |
| 4 | David | IT |
+----+----------+-----------+
如果我们想找出当前员工中哪些人没有离职记录,可以使用 EXCEPT
操作符:
SELECT name, department
FROM employees
EXCEPT
SELECT name, department
FROM former_employees;
执行上述查询后,结果将是:
+----------+-----------+
| name | department|
+----------+-----------+
| Bob | IT |
| Charlie | Sales |
+----------+-----------+
提示
EXCEPT
操作符会自动去重。如果你希望保留重复的行,可以使用 EXCEPT ALL
(如果数据库支持)。