SQL操作结果——并集、差集、交集

本文深入讲解了SQL中并集、差集和交集的操作方法,包括Union、Except和InterSect的使用,以及在MySQL中实现交集的具体语法。通过实例演示了如何高效地对数据进行集合操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

针对sql操作结果,经常面临对数据取并集、差集和交集的问题,如何能更高效更快速的对数据进行操作呢?

首先需要有两个表, 这两个表需要有相同的筛选字段列,以下详解。。。

为以下展示操作,建两个数据表:

test1:

test2:

一 并集Union

Union可以对两个或多个结果集进行连接, 形成“并集”。

限定条件:

1 子结果集要具有相同的结构

2 子结果集的列数必须相同

3 子结果集对应的数据类型必须可以兼容

4 每个子结果集不能包含order by和compute子句

语法格式

[SQL语句 1]
UNION
[SQL语句 2];

查询结果:

UNION和UNION ALL是有区别的,也就是说UNION ALL在执行后,不会把相同的结果合并,而UNION会把相同的结果只显示成一行。

 

二 差集 Except

Except可以对两个或多个结果集进行连接,形成“差集”。返回左边结果集合中已经有的记录,而右边结果集中没有的记录。

限定条件:

1 子结果集要具有相同的结构

2 子结果集的列数必须相同

3 子结果集对应的数据类型必须可以兼容

4 每个子结果集不能包含order by和compute子句

语法格式

[SQL语句 1]
Except
[SQL语句 2];

 

三 交集InterSect

InterSect可以对两个或多个结果集进行连接,形成“交集”。返回左边结果集和右边结果集中都有的记录。

限定条件

1 子结果集要具有相同的结构

2 子结果集的列数必须相同

3 子结果集对应的数据类型必须可以兼容

4 每个子结果集不能包含order by和compute子句

语法格式

[SQL语句 1]
InterSect
[SQL语句 2];

 

呃呃呃,对于以上语法,是适用于Oracle的,小编使用的是mysql,需要取交集,此时的InterSect对于mysql 来说是不识别的,所以小编另寻他法。

针对mysql取交集,可以使用inner join语法。

SELECT 列名
FROM 表1 INNER JOIN 表2
USING(列名);

或者

SELECT 表1.列名
FROM 表1 INNER JOIN 表2
on 表1.列名=表2.列名

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值