-- 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类型相关推荐

  1. redis的五种存储类型的具体用法

    一.String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-&g ...

  2. MySQL 4种text类型的最大长度

    MySQL 4种text类型的最大长度如下 TINYTEXT 256 bytes   TEXT 65,535 bytes ~64kb MEDIUMTEXT 16,777,215 bytes ~16MB ...

  3. left join 多条件_第九篇|Spark的五种JOIN策略解析

    JOIN操作是非常常见的数据处理操作,Spark作为一个统一的大数据处理引擎,提供了非常丰富的JOIN场景.本文分享将介绍Spark所提供的5种JOIN策略,希望对你有所帮助.本文主要包括以下内容: ...

  4. 学习ActiveMQ(五):activemq的五种消息类型和三种监听器类型

    一.前面我们一直发送的是字符串类型,其实activemq一共支持五种消息类型: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者:消费者: 1.String消息类型:发送者 ...

  5. Redis_17_Redis服务器中的数据库(五种基本类型底层存放)

    文章目录 一.前言 二.RedisObject对象 2.1 RedisObject对象 2.2 类型type 2.3 编码encoding 2.4 sds 三.字符串对象string 3.1 int编 ...

  6. 【Redis】五种存储类型及其底层数据结构

    Redis(Remote Dictionary Service远程字典服务) 参考: 图解redis五种数据结构底层实现(动图哦) Redis(1)--5种基本数据结构 目录 1. Redis的五种存 ...

  7. 短视频开头如何才能吸引人?五种开头类型分享,帮你抓住观众眼球

    短视频开头如何才能吸引人?五种开头类型分享,帮你抓住观众眼球 对于一则短视频来说,开头就吸引人,才能让观众有兴趣看下去,获得更多的播放量.那么,短视频开头究竟要怎么做才能吸引人呢?今天我们就来分享五种 ...

  8. 5、MySQL 七种 Join 形式分析

    5.MySQL 七种 Join 形式分析 5.1.建表 CREATE TABLE `t_dept` (`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,`deptName ...

  9. MySQL 五种整型数据类型的范围与区别 tinyint smallint mediumint int bigint

    之前在论坛上看到一个有意思的问题,如果有一个字段的值超过bigint,会发生什么. 然后就看到有人喷,说0.1秒插入一个值,将bigint设置为无符号,插入到极限需要多久,根本不可能遇到如何如何 . ...

  10. k8s,盘他!k8s的五种控制器类型解析

    文章目录 一:k8s的五种控制器 1.1:k8s的控制器类型 1.2:Deployment控制器 1.2.1:测试deployment控制器 1.3:SatefulSet控制器 1.3.1:创建无头服 ...

最新文章

  1. 安装OpenCL和AMD驱动程序
  2. 【物理女神】谁是中国第一位物理学女博士?
  3. CentOS单用户模式及进入后只读处理,开机修改为文字界面
  4. find命令及文件后缀名
  5. Survey Admin 示例:实现 Microsoft .NET 基于角色的安全性(转)
  6. tf.map_fn 多输入
  7. Hive分区表创建,增加及删除
  8. 最好用的个人财务管理工具 Money Pro 2.7.4中文版
  9. C++中泛型使用导致的膨胀问题
  10. NPM ---- 配置淘宝镜像CNPM
  11. lol更新显示正在连接服务器,wegame更新游戏显示正在连接服务器
  12. C语言经典面试题 与 C语言面试宝典
  13. ExoPlayer在开启循环播放时 统计播放次数和索引
  14. python 处理大数据
  15. 上海个人住房公积金复议材料
  16. 视频提取音频 - 手机视频在线提取音频提取器
  17. 华云数据信创云基座“全芯全栈全生态”能力解读
  18. emucheat,emucheat下载
  19. sparkSql 随机打散分配
  20. 微软 人立方:背后原理_时间到了:微软终于杀了我的人

热门文章

  1. 无人机油动发动机调试
  2. execute immediate 用法详解
  3. 2018 蓝桥杯省赛 B 组模拟赛(一)青出于蓝胜于蓝(DFS序+树状数组)
  4. C语言getc函数没错不管用,对比C语言中getc()函数和ungetc()函数的使用
  5. 2022AcWing寒假算法每日一题之1934. 贝茜放慢脚步
  6. mysql生日提醒_生日提醒为我所有的用户mysql
  7. mysql生日提醒_mysql生日提醒,闰年
  8. python分布式 集群_python分布式框架rq的使用
  9. 内网KDC服务器开放在哪个端口,针对kerbores的攻击有哪些?
  10. Codeforces Round #496 (Div. 3) E2 - Median on Segments (General Case Edition)(思维+用bit 位求前缀合)