SQL操作结果——并集、差集、交集
针对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中union多表合并[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.列名
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论