📜  SQL |除外条款

📅  最后修改于: 2022-05-13 01:55:10.977000             🧑  作者: Mango

SQL |除外条款

在 SQL 中,EXCEPT 返回由第一个 SELECT 操作返回的那些元组,而不是由第二个 SELECT 操作返回的那些元组。

这与在关系代数中使用减法运算符相同。

例子:
假设我们有两个关系,学生和 TA(助教)。我们希望返回所有不是助教的学生。查询可以表述为:

学生表:

StudentIDNameCourse
1RohanDBMS
2KevinOS
3MansiDBMS
4MansiADA
5RekhaADA
6MeghaOS
StudentIDNameCourse

TA Table:

1KevinTOC
2SitaIP
3ManikAP
4RekhaSNS
SELECT Name
       FROM Students
EXCEPT
SELECT NAME
       FROM TA;

输出:

Rohan
Mansi
Megha

要保留重复项,我们必须显式编写EXCEPTALL而不是 EXCEPT。

SELECT Name
       FROM Students
EXCEPTALL
SELECT Name
       FROM TA;

输出:

Rohan
Mansi
Mansi
Megha

EXCEPT 和 NOT IN 子句之间的区别
EXCEPT 自动删除最终结果中的所有重复项,而 NOT IN 保留重复的元组。同样重要的是要注意 MySQL 不支持 EXCEPT。