网站首页 > 技术文章 正文
浅析SQL中unnest()函数作用、数据库中的SET操作符:并集、交集、差集(UNION,INTERSECT,MINUS)
一、SQL中 UNNEST 是什么
如果想要将ARRAY转换为一组行,即平展操作,可以使用UNNEST运算符。(注意函数名 unnest 不要写错了)
UNNEST获取一个ARRAY,然后平铺成一个表,表中的每一行都是该ARRAY中的元素。
select unnest('{1,2,3,4}'::int[]), 1 as test
select unnest(team_ids) from es_ser_acc where id = 2二、数据库中的SET操作符(UNION,INTERSECT,MINUS )
1、什么是SET操作符?
关系数据库中提供了一个关于集合的运算符SET操作符,其中包括以下操作:
- UNION/UNION ALL 并集
- INTERSECT 交集
- MINUS 差集
2、UNION:合并两个查询结果集,隐式DINSTINCT,删除重复行
--合并两个提取表/派生表(derived table), 返回结果为:[a,b,c,d,e]
SELECT FC FROM (VALUES('a'),('b'),('c'),('e')) Table1 (FC)
UNION
SELECT FC FROM (VALUES('a'),('b'),('c'),('d')) Table2 (FC)3、UNION ALL:简单合并两个查询结果集,不删除重复行
4、EXCEPT / MINUS:返回出现在第一个结果集但不出现在第二个结果集中的所有行
--返回结果为:[e]
SELECT FC FROM (VALUES('a'),('b'),('c'),('e')) Table1 (FC)
EXCEPT
SELECT FC FROM (VALUES('a'),('b'),('c'),('d')) Table2 (FC)5、INTERSECT:返回第一个查询结果集和第二个查询结果集共有的部分
--返回结果为:[a,b,c]
SELECT FC FROM (VALUES('a'),('b'),('c'),('e')) Table1 (FC)
INTERSECT
SELECT FC FROM (VALUES('a'),('b'),('c'),('d')) Table2 (FC)三、集合运算的使用场景
1、使用UNION代替Where子句中的OR,查询速度更快
2、使用EXCEPT和INTERSECT, 过滤出列表中不存在/存在于数据库中的项
猜你喜欢
- 2025-07-27 Mybatis Plus框架学习指南-第六节内容(常用的类 1)
- 2025-07-27 面试题:RocketMQ如何保证消息不重复消费
- 2025-07-27 如何安全配置数据库(MySQL/PostgreSQL/MongoDB)
- 2025-07-27 SQL-执行过程详解(sql语句执行)
- 2025-07-27 SQL Server如何使用维护计划?(sql2000维护计划怎么执行)
- 2025-07-27 云服务器:SQL数据库超时的原因与解决方法
- 2025-07-27 SQL 从入门到精通:全面掌握数据库操作
- 2025-07-27 数据库 SQL 约束之 DEFAULT(sql的约束是什么)
- 2025-07-27 windows下,mysql自动备份脚本(mysql数据备份脚本)
- 2025-07-27 SQL Server中从SELECT进行UPDATE的方法
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (77)
- vector线程安全吗 (73)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)
