Mysql: SQL JOIN 子句详解
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)、SQL LEFT JOIN、SQL RIGHT JOIN、SQL FULL JOIN,其中前一种是内连接,后三种是外链接。
假设我们有两张表,Table A是左边的表,Table B是右边的表。
id | name |
1 | |
2 | 淘宝 |
3 | 微博 |
4 |
id | address |
1 | 美国 |
5 | 中国 |
3 | 中国 |
6 | 美国 |
一、INNER JOIN
内连接是最常见的一种连接,只连接匹配的行。
inner join语法
select column_name(s)
from table 1
INNER JOIN table 2
ON
table 1.column_name=table 2.column_name
注释:INNER JOIN与JOIN是相同
INNER JOIN产生的结果集中,是1和2的交集。
select * from Table A inner join Table B
on Table A.id=Table B.id
执行以上SQL输出结果如下:
id | name | address |
1 | 美国 | |
3 | 微博 | 中国 |
二、LEFT JOIN
LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。
LEFT JOIN 语法
select column_name(s)
from table 1
LEFT JOIN table 2
ON table 1.column_name=table 2.column_name
注释:在某些数据库中,LEFT JOIN 称为LEFT OUTER JOIN
LEFT JOIN产生表1的完全集,而2表中匹配的则有值,没有匹配的则以null值取代。
select * from Table A left join Table B
on Table A.id=Table B.id
执行以上SQL输出结果如下:
id | name | address |
1 | 美国 | |
2 | 淘宝 | null |
3 | 微博 | 中国 |
4 | null |
三、RIGHT JOIN
RIGHT JOIN返回右表的全部行和左表满足ON条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。
RIGHT JOIN语法
select column_name(s)
from table 1
RIGHT JOIN table 2
ON table 1.column_name=table 2.column_name
注释:在某些数据库中,RIGHT JOIN 称为RIGHT OUTER JOIN
RIGHT JOIN产生表2的完全集,而1表中匹配的则有值,没有匹配的则以null值取代。
select * from Table A right join Table B
on Table A.id=Table B.id
执行以上SQL输出结果如下:
id | name | address |
1 | 美国 | |
5 | null | 中国 |
3 | 微博 | 中国 |
6 | null | 美国 |
四、FULL OUTER JOIN
FULL JOIN 会从左表 和右表 那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替
FULL OUTER JOIN语法
select column_name(s)
from table 1
FULL OUTER JOIN table 2
ON table 1.column_name=table 2.column_name
FULL OUTER JOIN产生1和2的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。
select * from Table A full outer join Table B
on Table A.id=Table B.id
执行以上SQL输出结果如下:
id | name | address |
1 | 美国 | |
2 | 淘宝 | null |
3 | 微博 | 中国 |
4 | null | |
5 | null | 中国 |
6 | null | 美国 |
Mysql: SQL JOIN 子句详解相关推荐
- mysql sql组合_详解mysql 组合查询
使用UNION 多数SQL查询都只包含一个或多个表中返回数据的单条SELECT语句.MySQL也允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回.这些组合查询通常称为并(uni ...
- mysql inner join where_详解mysql 使用left join添加where条件的问题分析
当前需求: 有group和factor两张表,一个group对应多个factor,现在想查询有效的group和对应的有效的factor,两个表都有isDel逻辑删除标志. 最开始的错误写法一: SEL ...
- mysql left join用法详解
文章目录 1. left join 2. 实例 3. SQL语句举例 4. 总结 1. left join LEFT JOIN:寻找left join左边的表的记录. 系统会将A表与B表进行笛卡尔积运 ...
- MySQL系列---架构与SQL执行流程详解
文章目录 1. 背景 2. 架构体系 2.1 架构图 2.2 模块详解 2.3 架构分层 3. 查询SQL语句执行流程 3.1 连接 3.1.1 MySQL支持的通信协议 3.1.2 通信方式 3.2 ...
- mysql 批量导入sql_MySQL高效导入多个.sql文件方法详解
MySQL有多种方法导入多个.sql文件(里面是sql语句),常用的有两个命令:mysql和source. 但是这两个命令的导入效率差别很大,具体请看最后的比较. (还有sqlimport和LOAD ...
- MySQL高级之explain详解
MySQL高级之explain详解 文章目录 MySQL高级之explain详解 一.expalin命令详解 1.使用方式 2.结果显示 3.主要的字段信息 4.作用 二.id字段 三.select_ ...
- mysql配置文件my.cnf详解
mysql配置文件my.cnf详解 basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录. datadir = ...
- 【java学习之路】(java框架)004.Mybatis SQL映射文件详解
02Mybatis SQL映射文件详解 在之前我们学习了mybatis的全局配置文件,下面我们开始学习mybatis的映射文件,在映射文件中,可以编写以下的顶级元素标签: cache – 该命名空 ...
- mysql索引 include_MySql索引详解
什么是索引? 1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据.对于索引,会保存在额外的文件中. 2.索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构 ...
最新文章
- 平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。
- golang for循环 使用多个变量
- DB设计原则(一)字段名定义避免二义性。
- Lync Server 2013之初次安装
- 【项目管理】不确定性绩效域管理
- 6-2 链式表的按序号查找
- “你的手机上未安装应用程序”的解决方案
- AI医疗 | 新开源计算机视觉技术用于新生儿胎龄估计
- 生产线改造升级 蔚来部分10月份车辆订单将推迟交付
- 卡函数or1200基于simple-spi的SD卡驱动
- bigdecimal计算开n次方_随笔:HashMap中容量为什么是2的次方数?
- 菜鸟程序猿的工作心态
- Vue3.0 项目创建
- QCC蓝牙芯片PIO操作
- 多项式承诺Polynomial commitment方案汇总
- 2022BUAA数据结构期末大作业的一些想法
- 怎么用计算机属性打开文件,鼠标双击打不开文件怎么办 鼠标双击变成属性的解决方法...
- 业务流程优化与信息化到底有多远?
- 盘点:20位近两年新任“院士校长”!
- win10修改账户权限