MySQL七种JOIN类型小结


Posted in MySQL onOctober 24, 2021

        在开始之前,我们创建两个表用于演示将要介绍的其中JOIN类型。

建表

CREATE TABLE `tbl_dept` (
   `id` INT(11) NOT NULL AUTO_INCREMENT,
   `deptName` VARCHAR(30) DEFAULT NULL,
   `locAdd` VARCHAR(40) DEFAULT NULL,
   PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE `tbl_emp` (
   `id` INT(11) NOT NULL AUTO_INCREMENT,
   `name` VARCHAR(20) DEFAULT NULL,
   `deptId` VARCHAR(11) NOT NULL,
   PRIMARY KEY (`id`),
   KEY `fk_dept_id` (`deptId`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

初始化数据

MySQL七种JOIN类型小结MySQL七种JOIN类型小结

七种JOIN

1. A ∩ B

MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 INNER JOIN TableB B # 共有
 ON A.Key = B.Key

MySQL七种JOIN类型小结

2. A ( = A ∩ B + A* )

MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 LEFT JOIN TableB B
 ON A.Key = B.Key

MySQL七种JOIN类型小结

3. B ( = A ∩ B + B* )

MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 RIGHT JOIN TableB B
 ON A.Key = B.Key

MySQL七种JOIN类型小结 

4. A* ( = A - A ∩ B )

 MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 LEFT JOIN TableB B
 ON A.Key = B.Key # ON时主表保留
 WHERE B.Key IS NULL # 筛选A表数据

MySQL七种JOIN类型小结

5. B* ( = B - A ∩ B )

MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 RIGHT JOIN TableB B
 ON A.Key = B.Key
 WHERE A.Key IS NULL

MySQL七种JOIN类型小结

6. A ∪ B

 MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 FULL OUTER JOIN TableB B ## FULL OUTER 仅oracle支持
 ON A.Key = B.Key

 MySQL七种JOIN类型小结

7. A ∪ B - A ∩ B

MySQL七种JOIN类型小结

SELECT < select_list >
 FROM TableA A
 FULL OUTER JOIN TableB B
 ON A.Key = B.Key
 WHERE A.Key IS NULL OR B.Key IS NULL

MySQL七种JOIN类型小结

到此这篇关于MySQL七种JOIN类型详解的文章就介绍到这了,更多相关mysql join类型内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
mysql知识点整理
Apr 05 MySQL
Mysql Show Profile
Apr 05 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
MySQL 用 limit 为什么会影响性能
Sep 15 MySQL
浅谈MySQL中的六种日志
Mar 23 MySQL
排查MySQL生产环境索引没有效果
Apr 11 MySQL
详解Mysql事务并发(脏读、不可重复读、幻读)
Apr 29 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
May 06 MySQL
mysql查找连续出现n次以上的数字
May 11 MySQL
MySQL选择合适的备份策略和备份工具
Jun 01 MySQL
MySQL生成千万测试数据以及遇到的问题
Aug 05 MySQL
MySQL count(*)统计总数问题汇总
Sep 23 MySQL
MySQL中的引号和反引号的区别与用法详解
SQL实战演练之网上商城数据库商品类别数据操作
Oct 24 #MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
mysql中int(3)和int(10)的数值范围是否相同
深入解析MySQL索引数据结构
MySQL数据库必备之条件查询语句
Oct 15 #MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
You might like
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
[01:27]2014DOTA2展望TI 剑指西雅图IG战队专访
2014/06/30 DOTA
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
python制作花瓣网美女图片爬虫
2015/10/28 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
python算法表示概念扫盲教程
2017/04/13 Python
Python中模块与包有相同名字的处理方法
2017/05/05 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
对python函数签名的方法详解
2019/01/22 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
大学毕业生个人自荐书
2014/07/02 职场文书
违纪开除通知书
2015/04/25 职场文书
保险公司增员口号
2015/12/25 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android