except减集

EXCEPT 是 SQL 中的一个集合操作符,用于从第一个查询的结果集中排除第二个查询的结果集。换句话说,它返回第一个查询中存在但在第二个查询中不存在的记录。EXCEPT 操作符的行为类似于数学中的集合差运算。

语法

SELECT column_list
FROM table1
EXCEPT
SELECT column_list
FROM table2;
  • column_list 是要在两个查询中进行比较的列名列表。这些列的数量和数据类型必须相同。
  • table1 和 table2 是你要从中选择数据的表。

示例

假设我们有两张表 students_2023students_2024,每张表都有一列 student_id,表示学生的唯一标识符。现在,我们想找出在 2023 年还在校但在 2024 年不再在校的学生。

SELECT student_id
FROM students_2023
EXCEPT
SELECT student_id
FROM students_2024;

解释:

  • SELECT student_id FROM students_2023: 获取 2023 年在校的所有学生 ID。
  • EXCEPT: 排除在第二个查询中存在的记录。
  • SELECT student_id FROM students_2024: 获取 2024 年在校的所有学生 ID。

这个查询的结果将是只存在于 students_2023 表而不在 students_2024 表中的 student_id

注意事项

  1. 列数量和类型必须相同EXCEPT 操作符要求两个查询的结果集有相同数量的列,并且相应列的数据类型必须兼容。

  2. 去重EXCEPT 会默认去除重复的行。如果你想要保留重复的行,可以使用 EXCEPT ALL

  3. 顺序EXCEPT 的顺序很重要,它只会排除第二个查询中存在的记录,反之不成立。

使用场景

  • 查找缺失数据:你可以使用 EXCEPT 来查找在一个表中存在而另一个表中缺失的数据。
  • 数据验证EXCEPT 可用于比较两个结果集,验证它们是否相同或找出其中的差异。
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值