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(左联接) left join(左联接) left join(左联接)相关推荐

  1. R语言merge函数左连接dataframe数据(Left (outer) join in R)、左连接必须将参数all设置(all.x = TRUE)、默认merge函数通过公共列名合并数据集

    R语言merge函数左连接dataframe数据(Left (outer) join in R).merge函数进行左连接必须将参数all设置为(all.x = TRUE).默认merge函数通过公共 ...

  2. oracle11g中的join,sql - 使用Oracle 11g中的+符号进行左外连接

    (+)相当于(+). 在Oracle中,(+)表示JOIN中的"可选"表. 所以在你的第一个查询中,它是一个(+).在你的第二个查询中,它是(+).它们在功能上是等价的. 在术语中 ...

  3. full join 和full outer join_28.MySQL中的左(右)外连接 LEFT(RIGHT) [OUTER] JOIN

    1.准备 CREATE DATABASE mahaiwuji;USE mahaiwuji;CREATE TABLE grade( id INT(4) PRIMARY KEY, name VARCHAR ...

  4. mysql join 会算笛卡尔积吗_mysql 内连接、左连接会出现笛卡尔积?

    这周的部门周会,分享的同事说的是数据库优化相关,过程中,一个同事跟我讨论左连接查询,是不是笛卡尔积.我第一反应,左连接肯定不是笛卡尔积啊,左连接是以左表为准,左表有m条记录,则结果集是m条记录(哈哈, ...

  5. mysql的联接算法_【MySQL—SQL编程】联接

    联接查询 联接查询是一种常见的数据库操作,即在两张表(或更多表)中进行行匹配的操作.一般称之为水平操作,这是因为对几张表进行联接操作所产生的结果集可以包含这几张表中所有的列. CROSS JOIN C ...

  6. left join 一对多_MYSQL 连接查询算法:JOIN语句在 MYSQL 内部到底是怎么执行的

    前言 我们从一个问题引入今天的主题. 在日常业务开发中,我们可能经常听到 DBA 对我们说"不要"(注意:不是禁止)使用 join,那么为什么 DBA 对 join 这么抵触呢?是 ...

  7. mysql 三表inner join_MySql的join(连接)查询 (三表 left join 写法)

    1.内连接:将两个表中存在连结关系的字段符合连接条件的记录形成记录集 Select A.name,B.name from A inner join B on A.id=B.id和 Select A.n ...

  8. mysql+join+合计_图解MySQL里的各种 JOIN,看完不懂来找我!

    点击关注上方"SQL数据库开发", 设为"置顶或星标",第一时间送达干货作者:码志 链接:https://mazhuang.org/2017/09/11/joi ...

  9. 【Hive】left semi join(exists、in)和 left join 区别

    left semi join(exists.in)和 left join 区别 left semi join 基本认识 对比 执行计划 小结 left semi join 基本认识 LEFT SEMI ...

  10. mysql left join 三表查询_MySql的join(连接)查询 (三表 left join 写法)

    1.内连接:将两个表中存在连结关系的字段符合连接条件的记录形成记录集 Select A.name,B.name from A inner join B on A.id=B.id和 Select A.n ...

最新文章

  1. Debug.startMethodTracing() 没有生成trace文件
  2. 25+AI技术主题演讲及项目展示!英特尔AI全球影响力嘉年华开启,全球AI人才线上群聚
  3. 2-4:套接字(Socket)编程之TCP通信
  4. 运用Parcelable将类序列化并绑定给Intent
  5. php 发送多个,向多个地址发送邮件的php类
  6. c++ primer plus 复合类型之数组
  7. winform实现下拉框检索
  8. 基于IP搭建SAN存储
  9. iOS开发-集成阿里云实人认证
  10. 【第十三讲】TMS320F28335开发板之DMA模块
  11. SQL数据库常用约束及建表、插入数据时注意事项
  12. 用JsonParser解析json树模型
  13. 14. 异步加载Js的方式有哪些?
  14. 计算机系统基础:计算机系统概述
  15. HTML5教程8-视频
  16. 100以内加减法混合出题
  17. Linux 网络加速和性能优化
  18. 执行cmd命令的时候出现:因为在此系统上禁止运行脚本 解决方法
  19. 安卓c语言自动补全软件吾爱,C语言实现贪吃蛇小游戏
  20. 实现cpu与计算机上所有部件,CPU包含那些部件各部分有什么主要功能

热门文章

  1. 使用计算机的缺点英文作文,网络与计算机的好处与坏处英文作文
  2. sql唯一约束怎么设置_20200923 SQL UNIQUE 约束
  3. 8086 c语言,2016年上海大学机电工程与自动化学院微机硬件及软件(包含8086微机和C语言)之C程序设计考研复试题库...
  4. windows 命令行cmd安装python matplotlib模块后pycharm显示“ModuleNotFoundError: No module named ‘matplotlib‘解决方法
  5. python自动修图_程序员不会用PS给女朋友修图?没关系,用Python十行代码轻松搞定-站长资讯中心...
  6. C++知识点48——类继承与类的作用域
  7. matlab绘制多色散点图
  8. ValueError: check_hostname requires server_hostname解决方法
  9. oracle锁表语句执行提示无法终止当前对话_显示Oracle数据库表或行上持有锁的所有会话...
  10. Redis SLAVE过期键策略