当前位置: 首页 > news >正文

SQL 集合运算

SQL 中的集合运算用于对查询结果集进行操作,主要包括并集、交集和差集。常见的集合运算符有 UNIONINTERSECT 和 EXCEPT(或 MINUS,具体取决于数据库系统)。

1. UNION

UNION 用于合并两个或多个查询结果集,并去除重复行。

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
SELECT name FROM employees
UNION
SELECT name FROM contractors;

此查询返回 employees 和 contractors 表中所有不重复的 name 值


2. UNION ALL

UNION ALL 与 UNION 类似,但保留重复行。

SELECT column1, column2, ...
FROM table1
UNION ALL
SELECT column1, column2, ...
FROM table2;
SELECT name FROM employees
UNION ALL
SELECT name FROM contractors;

此查询返回 employees 和 contractors 表中所有的 name 值,包括重复项


3. INTERSECT

INTERSECT 返回两个查询结果集的交集,即同时出现在两个结果集中的行。

SELECT column1, column2, ...
FROM table1
INTERSECT
SELECT column1, column2, ...
FROM table2;
SELECT name FROM employees
INTERSECT
SELECT name FROM contractors;

此查询返回同时存在于 employees 和 contractors 表中的 name 值


4. EXCEPT(或 MINUS)

EXCEPT 返回第一个查询结果集中存在但第二个结果集中不存在的行。

SELECT column1, column2, ...
FROM table1
EXCEPT
SELECT column1, column2, ...
FROM table2;
SELECT name FROM employees
EXCEPT
SELECT name FROM contractors;

此查询返回在 employees 表中但不在 contractors 表中的 name 值


注意事项

  • 参与集合运算的查询结果集必须具有相同的列数和数据类型。

  • UNION 和 INTERSECT 默认去除重复行,而 UNION ALL 保留重复行。

  • EXCEPT 在某些数据库系统中可能称为 MINUS


示例综合

假设有两个表 A 和 B

表 A:

idname
1Alice
2Bob
3Carol

表 B:

idname
2Bob
3Carol
4Dave
SELECT name FROM A
UNION
SELECT name FROM B;

结果:

name
Alice
Bob
Carol
Dave
SELECT name FROM A
INTERSECT
SELECT name FROM B;

结果:

name
Bob
Carol
SELECT name FROM A
EXCEPT
SELECT name FROM B;

结果:

name
Alice

这些集合运算在数据分析和处理中非常有用,能够帮助我们从多个表中提取和比较数据

相关文章:

  • 蓝桥与力扣刷题(蓝桥 回文判定)
  • AI 浪潮下的 IT 行业变革:机遇与挑战并存
  • 08.面向对象的特性
  • 【力扣刷题实战】搜索插入位置
  • 用API解锁大模型超能力——从零构建智能体到本地知识库全链路解析
  • FFmpeg6.1.1 MSYS2+GCC 源码编译
  • 在C++ Qt中集成Halcon窗口并实现跨平台兼容和大图加载
  • 手敲NLP相关神经网络,熟悉神经网络的结构与实现!
  • 数据类设计_图片类设计之9_图标类设计_C++实战_(前端架构)
  • 插值查找和斐波那契查找
  • 金桔网桥连载5-详解
  • pikachu靶场实战记录
  • OrangePi 5B 内核开启 CONFIG_CIFS 通过 Samba 挂载 NAS 路径
  • 文件上传绕过的小点总结(3)
  • C++效率掌握之STL库:stack queue函数全解
  • C++ 利用类模板实现一个数组类封装
  • 《数字图像处理》第三章 3.7 混合空间增强法笔记:原理、实现与Python实战
  • 【赵渝强老师】达梦数据库的物理存储结构
  • 使用Langchain4J整合springboot+流式数据响应示例
  • # Ubuntu 软件包管理:apt、snap 和 Flatpak 如何选择
  • 抚州一原副县长拉拢公职人员组建“吃喝圈”,长期接受打牌掼蛋等“保姆式”服务
  • 澳大利亚大选今日投票:聚焦生活成本与“特朗普问题”
  • 戴上XR头盔,五一假期在上海也能体验“登陆月球”
  • 王毅谈金砖国家开展斡旋调解的经验和独特优势
  • 国务院任免国家工作人员:颜清辉任人社部副部长
  • 五一去哪儿|外国朋友来中国,“买买买”成为跨境旅游新趋势