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的区别相关推荐

  1. left join 和 left outer join 的区别

    老是混淆,做个笔记,转自:https://www.cnblogs.com/xieqian111/p/5735977.html left join 和 left outer join 的区别 通俗的讲: ...

  2. Oracle的left join中on和where的区别

    Oracle的left join中on和where的区别 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和wher ...

  3. 转载:left join和left semi join的联系和区别

    1.联系 他们都是 hive join 方式的一种,join on 属于 common join(shuffle join/reduce join),而 left semi join 则属于 map ...

  4. left join 和 left outer join 的区别【转】

    通俗的讲:     A   left   join   B   的连接的记录数与A表的记录数同     A   right   join   B   的连接的记录数与B表的记录数同       A   ...

  5. Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...

  6. 图解SQL inner join、left join、right join、full outer join、union、union all的区别

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...

  7. 【转】left join 和 left outer join 的区别

    left join 和 left outer join 的区别 通俗的讲:     A   left   join   B   的连接的记录数与A表的记录数同     A   right   join ...

  8. Java-线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别

    Java线程中sleep().wait()和notify()和notifyAll().suspend和resume().yield().join().interrupt()的用法和区别 从操作系统的角 ...

  9. 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 ...

  10. hive 的 left semi join 讲解与left jion的区别

    一:介绍 他们都是 hive join 方式的一种,join on 属于 common join(shuffle join/reduce join), 而 left semi join 则属于 map ...

最新文章

  1. office不能安装问题
  2. 数据库事务原理详解-数据库隔离级别
  3. VSFTP服务--Linux学习笔记
  4. org.apache.commons.io——FileUtils学习笔记
  5. 马云:未来无工可打,人工智能发展红利还在10年以后
  6. Java描述设计模式(07):适配器模式
  7. 小程序 | 微信小程序多图上传(点击上传、可修改删除与放大回显)
  8. MVC中将list转化成json 并处理时间格式
  9. pygame网络游戏_7_1:地图编辑器的使用
  10. JPA环境下使用Hibernate二级缓存
  11. droidcam调用手机摄像头的方法(提供PC+Android软件,不需要积分)
  12. 数据挖掘经典十大算法_ID3算法
  13. 分辨率变化的数据from mydrivers 显卡评测
  14. CSharp(C#)语言_第一章
  15. WPF的Prism框架简介
  16. ROSNOTE : ros::spin() / ros::spinOnce() /rospy.spin()
  17. java date类 时区_Java Date 与时区
  18. Go语言 大话数据结构——图
  19. Sql 中两个数除法计算结果等于0原因是什么?
  20. 阿里云OSS存储服务器

热门文章

  1. mysql dmz_MySQL 中LIMIT的使用详解
  2. android表白app
  3. cdp备份适合oracle吗,备份系统建设中的四个认识误区,你有吗?
  4. php 5.6 引用传递,升级到5.6.x后如何在php中修复引用传递
  5. 趣学java,编程趣学习app
  6. dev 中 gridcontrol1 滚动条重绘_浏览器的重绘和回流(Repaint amp; Reflow)
  7. Problem I: 函数---判断某年某月某日是这一年中的第几天
  8. Fighting_小银考呀考不过四级【递推】
  9. JavaSE基础知识学习-----泛型
  10. 如何通过BBED找回删除数据