Mysql-五种join类型
-- join从句可以分为5种:内连接:inner join;全外连接:full outer;左外连接:left outer;右外连接:right outer;交叉连接:cross
1、inner join
考虑如下的两张表(user1,user2):
+----+-----------+----------+
| id | user_name | over |
+----+-----------+----------+
| 1 | 孙悟空 | 斗战胜佛 |
| 2 | 沙僧 | 金身罗汉 |
| 3 | 唐僧 | 功德佛 |
| 4 | 猪八戒 | 净坛使者 |
+----+-----------+----------++----+-----------+--------+
| id | user_name | over |
+----+-----------+--------+
| 1 | 孙悟空 | 成佛 |
| 2 | 牛魔王 | 被降伏 |
| 3 | 蛟魔王 | 被降伏 |
| 4 | 鹏魔王 | 被降伏 |
| 5 | 狮驼王 | 被降伏 |
+----+-----------+--------+
内连接得到两张表的公共部分:
mysql> select a.`user_name`,a.`over`,b.`over`-> from user1 a-> inner join user2 b-> on a.`user_name`=b.`user_name`;
+-----------+----------+------+
| user_name | over | over |
+-----------+----------+------+
| 孙悟空 | 斗战胜佛 | 成佛 |
+-----------+----------+------+
1 row in set (0.01 sec)
2、左外连接left join,得到user1表的全部:
mysql> select a.`user_name`,a.`over`,b.`over`-> from user1 a-> left join-> user2 b-> on a .`user_name`=b.`user_name`;
+-----------+----------+------+
| user_name | over | over |
+-----------+----------+------+
| 孙悟空 | 斗战胜佛 | 成佛 |
| 沙僧 | 金身罗汉 | NULL |
| 唐僧 | 功德佛 | NULL |
| 猪八戒 | 净坛使者 | NULL |
+-----------+----------+------+
4 rows in set (0.00 sec)
通过is null,可以查询到只存在与user1表中的数据。right join类似。
3、全连接full join,获取两个表的全部数据。Mysql中没有提供full join的操作,但是可以通过union all结合left join和right join来实现。
mysql> select a.`user_name`,a.`over`,b.`over`-> from user1 a left join user2 b-> on a.`user_name`=b.`user_name`-> union all-> select b.`user_name`,b.`over`,a.`over`-> from user1 a right join user2 b-> on a.`user_name`=b.`user_name`;
+-----------+----------+----------+
| user_name | over | over |
+-----------+----------+----------+
| 孙悟空 | 斗战胜佛 | 成佛 |
| 沙僧 | 金身罗汉 | NULL |
| 唐僧 | 功德佛 | NULL |
| 猪八戒 | 净坛使者 | NULL |
| 孙悟空 | 成佛 | 斗战胜佛 |
| 牛魔王 | 被降伏 | NULL |
| 蛟魔王 | 被降伏 | NULL |
| 鹏魔王 | 被降伏 | NULL |
| 狮驼王 | 被降伏 | NULL |
+-----------+----------+----------+
9 rows in set (0.00 sec)
4、交叉连接(笛卡尔连接)cross join,做交叉乘积,注意此时不需要指定on条件。
mysql> select a.`user_name`,a.`over`,b.`over` from user1 a cross join user2 b;
+-----------+----------+--------+
| user_name | over | over |
+-----------+----------+--------+
| 孙悟空 | 斗战胜佛 | 成佛 |
| 沙僧 | 金身罗汉 | 成佛 |
| 唐僧 | 功德佛 | 成佛 |
| 猪八戒 | 净坛使者 | 成佛 |
| 孙悟空 | 斗战胜佛 | 被降伏 |
| 沙僧 | 金身罗汉 | 被降伏 |
| 唐僧 | 功德佛 | 被降伏 |
| 猪八戒 | 净坛使者 | 被降伏 |
| 孙悟空 | 斗战胜佛 | 被降伏 |
| 沙僧 | 金身罗汉 | 被降伏 |
| 唐僧 | 功德佛 | 被降伏 |
| 猪八戒 | 净坛使者 | 被降伏 |
| 孙悟空 | 斗战胜佛 | 被降伏 |
| 沙僧 | 金身罗汉 | 被降伏 |
| 唐僧 | 功德佛 | 被降伏 |
| 猪八戒 | 净坛使者 | 被降伏 |
| 孙悟空 | 斗战胜佛 | 被降伏 |
| 沙僧 | 金身罗汉 | 被降伏 |
| 唐僧 | 功德佛 | 被降伏 |
| 猪八戒 | 净坛使者 | 被降伏 |
+-----------+----------+--------+
20 rows in set (0.00 sec)
Mysql-五种join类型相关推荐
- redis的五种存储类型的具体用法
一.String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-&g ...
- MySQL 4种text类型的最大长度
MySQL 4种text类型的最大长度如下 TINYTEXT 256 bytes TEXT 65,535 bytes ~64kb MEDIUMTEXT 16,777,215 bytes ~16MB ...
- left join 多条件_第九篇|Spark的五种JOIN策略解析
JOIN操作是非常常见的数据处理操作,Spark作为一个统一的大数据处理引擎,提供了非常丰富的JOIN场景.本文分享将介绍Spark所提供的5种JOIN策略,希望对你有所帮助.本文主要包括以下内容: ...
- 学习ActiveMQ(五):activemq的五种消息类型和三种监听器类型
一.前面我们一直发送的是字符串类型,其实activemq一共支持五种消息类型: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者 ...
- Redis_17_Redis服务器中的数据库(五种基本类型底层存放)
文章目录 一.前言 二.RedisObject对象 2.1 RedisObject对象 2.2 类型type 2.3 编码encoding 2.4 sds 三.字符串对象string 3.1 int编 ...
- 【Redis】五种存储类型及其底层数据结构
Redis(Remote Dictionary Service远程字典服务) 参考: 图解redis五种数据结构底层实现(动图哦) Redis(1)--5种基本数据结构 目录 1. Redis的五种存 ...
- 短视频开头如何才能吸引人?五种开头类型分享,帮你抓住观众眼球
短视频开头如何才能吸引人?五种开头类型分享,帮你抓住观众眼球 对于一则短视频来说,开头就吸引人,才能让观众有兴趣看下去,获得更多的播放量.那么,短视频开头究竟要怎么做才能吸引人呢?今天我们就来分享五种 ...
- 5、MySQL 七种 Join 形式分析
5.MySQL 七种 Join 形式分析 5.1.建表 CREATE TABLE `t_dept` (`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,`deptName ...
- MySQL 五种整型数据类型的范围与区别 tinyint smallint mediumint int bigint
之前在论坛上看到一个有意思的问题,如果有一个字段的值超过bigint,会发生什么. 然后就看到有人喷,说0.1秒插入一个值,将bigint设置为无符号,插入到极限需要多久,根本不可能遇到如何如何 . ...
- k8s,盘他!k8s的五种控制器类型解析
文章目录 一:k8s的五种控制器 1.1:k8s的控制器类型 1.2:Deployment控制器 1.2.1:测试deployment控制器 1.3:SatefulSet控制器 1.3.1:创建无头服 ...
最新文章
- 安装OpenCL和AMD驱动程序
- 【物理女神】谁是中国第一位物理学女博士?
- CentOS单用户模式及进入后只读处理,开机修改为文字界面
- find命令及文件后缀名
- Survey Admin 示例:实现 Microsoft .NET 基于角色的安全性(转)
- tf.map_fn 多输入
- Hive分区表创建,增加及删除
- 最好用的个人财务管理工具 Money Pro 2.7.4中文版
- C++中泛型使用导致的膨胀问题
- NPM ---- 配置淘宝镜像CNPM
- lol更新显示正在连接服务器,wegame更新游戏显示正在连接服务器
- C语言经典面试题 与 C语言面试宝典
- ExoPlayer在开启循环播放时 统计播放次数和索引
- python 处理大数据
- 上海个人住房公积金复议材料
- 视频提取音频 - 手机视频在线提取音频提取器
- 华云数据信创云基座“全芯全栈全生态”能力解读
- emucheat,emucheat下载
- sparkSql 随机打散分配
- 微软 人立方:背后原理_时间到了:微软终于杀了我的人
热门文章
- 无人机油动发动机调试
- execute immediate 用法详解
- 2018 蓝桥杯省赛 B 组模拟赛(一)青出于蓝胜于蓝(DFS序+树状数组)
- C语言getc函数没错不管用,对比C语言中getc()函数和ungetc()函数的使用
- 2022AcWing寒假算法每日一题之1934. 贝茜放慢脚步
- mysql生日提醒_生日提醒为我所有的用户mysql
- mysql生日提醒_mysql生日提醒,闰年
- python分布式 集群_python分布式框架rq的使用
- 内网KDC服务器开放在哪个端口,针对kerbores的攻击有哪些?
- Codeforces Round #496 (Div. 3) E2 - Median on Segments (General Case Edition)(思维+用bit 位求前缀合)