left join、right join、inner join的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
举例如下:
--------------------------------------------
表A记录如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115
表B记录如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
--------------------------------------------
1.left join
sql语句如下:
select * from A
left join B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL
(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
--------------------------------------------
2.right join
sql语句如下:
select * from A
right join B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL 8 2006032408
(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
--------------------------------------------
3.inner join
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
--------------------------------------------
注:
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2
说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误.
left join、right join、inner join的区别相关推荐
- left join 和 left outer join 的区别
老是混淆,做个笔记,转自:https://www.cnblogs.com/xieqian111/p/5735977.html left join 和 left outer join 的区别 通俗的讲: ...
- Oracle的left join中on和where的区别
Oracle的left join中on和where的区别 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和wher ...
- 转载:left join和left semi join的联系和区别
1.联系 他们都是 hive join 方式的一种,join on 属于 common join(shuffle join/reduce join),而 left semi join 则属于 map ...
- left join 和 left outer join 的区别【转】
通俗的讲: A left join B 的连接的记录数与A表的记录数同 A right join B 的连接的记录数与B表的记录数同 A ...
- Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别
对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...
- 图解SQL inner join、left join、right join、full outer join、union、union all的区别
对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...
- 【转】left join 和 left outer join 的区别
left join 和 left outer join 的区别 通俗的讲: A left join B 的连接的记录数与A表的记录数同 A right join ...
- Java-线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
Java线程中sleep().wait()和notify()和notifyAll().suspend和resume().yield().join().interrupt()的用法和区别 从操作系统的角 ...
- hive join on 条件 与 where 条件区别
hive join on 条件 与 where 条件区别 1. select * from a left join b on a.id = b.id and a.dt=20181115;2. sele ...
- hive 的 left semi join 讲解与left jion的区别
一:介绍 他们都是 hive join 方式的一种,join on 属于 common join(shuffle join/reduce join), 而 left semi join 则属于 map ...
最新文章
- office不能安装问题
- 数据库事务原理详解-数据库隔离级别
- VSFTP服务--Linux学习笔记
- org.apache.commons.io——FileUtils学习笔记
- 马云:未来无工可打,人工智能发展红利还在10年以后
- Java描述设计模式(07):适配器模式
- 小程序 | 微信小程序多图上传(点击上传、可修改删除与放大回显)
- MVC中将list转化成json 并处理时间格式
- pygame网络游戏_7_1:地图编辑器的使用
- JPA环境下使用Hibernate二级缓存
- droidcam调用手机摄像头的方法(提供PC+Android软件,不需要积分)
- 数据挖掘经典十大算法_ID3算法
- 分辨率变化的数据from mydrivers 显卡评测
- CSharp(C#)语言_第一章
- WPF的Prism框架简介
- ROSNOTE : ros::spin() / ros::spinOnce() /rospy.spin()
- java date类 时区_Java Date 与时区
- Go语言 大话数据结构——图
- Sql 中两个数除法计算结果等于0原因是什么?
- 阿里云OSS存储服务器
热门文章
- mysql dmz_MySQL 中LIMIT的使用详解
- android表白app
- cdp备份适合oracle吗,备份系统建设中的四个认识误区,你有吗?
- php 5.6 引用传递,升级到5.6.x后如何在php中修复引用传递
- 趣学java,编程趣学习app
- dev 中 gridcontrol1 滚动条重绘_浏览器的重绘和回流(Repaint amp; Reflow)
- Problem I: 函数---判断某年某月某日是这一年中的第几天
- Fighting_小银考呀考不过四级【递推】
- JavaSE基础知识学习-----泛型
- 如何通过BBED找回删除数据