IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL实现交集查询和差集查询以及对称差查询 -> 正文阅读

[大数据]MySQL实现交集查询和差集查询以及对称差查询

MySQL实现交集查询和差集查询以及对称差查询

0x00 集合操作

集合操作的种类有三种,分别是:

1、并集操作(UNION)
2、交集操作(INTERSECT)
3、差集操作(EXCEPT)

参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同。

假设两个集合分别是A和B,这三种操作的示意图如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

0x01 数据库中的集合查询

集合操作在数据库中的应用是集合查询,同样有三种:
1、并集查询
2、交集查询
3、补集查询

以table1和table2两张表为例,进行查询:

table1:
在这里插入图片描述table2:
在这里插入图片描述

1、并集查询

在Oracle、SQL Server、MySQL数据库中,均可以使用UOION关键字进行并集查询

SELECT * FROM table1 
UNION
SELECT * FROM table2

SELECT * FROM table1 
UNION ALL
SELECT * FROM table2

在这里插入图片描述

UNION和UNION ALL谓词的差别:
UNION:将多个查询结果合并起来时,系统自动去掉重复元组。
UNION ALL:将多个查询结果合并起来时,保留重复元组。

UNION相当于在进行联合查询时,使用了SELECT DISTINCT语句。

2、交集查询

在Oracle和SQL Server中,使用INTERSECT关键字进行交集查询

SELECT * FROM table1 
INTERSECT
SELECT * FROM table2

在MySQL中,不支持INTERSECT关键字,因此查询会报错
在这里插入图片描述

3、补集查询

在Oracle中,使用MINUS关键字进行补集查询

SELECT * FROM table1 
MINUS
SELECT * FROM table2

在SQL Server中,使用EXCEPT关键字进行补集查询

SELECT * FROM table1 
EXCEPT
SELECT * FROM table2

在MySQL中,不支持EXCEPT关键字,因此查询会报错
在这里插入图片描述

0x02 MySQL的交集查询、差集查询和对称差查询的实现方式

因为MySQL不支持MINUS/EXCEPT和INTERSECT关键字,所以解决方案是使用JOIN关键字来达到相同的效果。

在MySQL中可以用内连接(INNER JOIN)和左外连接(LEFT JOIN)代替交集操作(INTERSECT)和差集操作(EXCEPT)

1、交集查询

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

SELECT table1.* FROM table1 
INNER JOIN table2
ON table1.model = table2.model

SELECT table1.* FROM table1 
JOIN table2
ON table1.model = table2.model

在这里插入图片描述

使用INNER JOIN来连接结果集,有4个限定条件。
  (1)子结果集要具有相同的结构。
  (2)字结果集的列数必须相同。
  (3)子结果集对应的数据类型必须可以兼容。
  (4)每个子结果集不能包含order by和compute子句。

2、差集查询

左连接LEFT JOIN的含义是求两个表table1和table2的交集外加左表剩下的数据。从笛卡尔积的角度讲,就是先从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录,最后保留右表中不存在的数据,形成“差集”。

SELECT table1.* FROM table1 
LEFT JOIN table2
ON table1.model = table2.model
WHERE table2.model is NULL

在这里插入图片描述

3、对称差查询

在集合操作中还有一种对称差操作,示意图如下
在这里插入图片描述

在MySQL中可以利用UNION、LEFT JOIN、RIGHT JOIN关键字实现对称差查询

SELECT table1.* FROM table1 
LEFT JOIN table2
ON table1.model = table2.model
WHERE table2.model is NULL
UNION
SELECT table2.* FROM table1 
RIGHT JOIN table2
ON table1.model = table2.model
WHERE table1.model is NULL

在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 09:57:56  更:2021-11-27 10:00:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:05:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码