1.定义

inner join(等值连接) : 仅仅返回两个表中联结字段相等的记录

left join(左联接) :返回包含左表中的全部记录和右表中联结字段相等的记录

right join(右联接) :返回包含右表中的全部记录和左表中联结字段相等的记录

INNER JOIN 语法:

INNER JOIN 连接两个数据表的使用方法:

SELECT * FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号

2.实例

表A记录例如以下:

aID               a Num   

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并不以谁为基础,它仅仅显示符合条件的记录.  还有就是inner join 能够结合where语句来使用 如:   select * from A innerjoin B on A.aID = B.bID where b.bname='2006032401' 这种话 就仅仅会放回一条数据了

inner join on, left join on, right join on的更多相关文章

  1. SQL Server之LEFT JOIN、RIGHT LOIN、INNER JOIN的区别

    很多人刚入门的时候分不清LEFT JOIN.RIGHT LOIN 和 INNER JOIN的区别,对它们的定义比较模糊,今天就简单的介绍一下它们的区别,对于入门的人来说,应该能够帮助你们理解. lef ...

  2. SQL join中级篇--hive中 mapreduce join方法分析

    1. 概述. 本文主要介绍了mapreduce框架上如何实现两表JOIN. 2. 常见的join方法介绍 假设要进行join的数据分别来自File1和File2. 2.1 reduce side jo ...

  3. Sort merge join、Nested loops、Hash join(三种连接类型)

    目前为止,典型的连接类型有3种: Sort merge join(SMJ排序-合并连接):首先生产driving table需要的数据,然后对这些数据按照连接操作关联列进行排序:然后生产probed ...

  4. SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)

    掌握了这些,就比较高级啦 Using the Same Table Twice 如下面查询中的branch字段 SELECT a.account_id, e.emp_id, b_a.name open ...

  5. 【fork/join】java并发编程-fork/join示例

    package com.chinamobile.epic.tako.common.graphite.query.sync.impl; import com.google.common.collect. ...

  6. 比较一下inner join(可直接简写为join)和where直接关联

    SELECT * FROM A ,B WHERE A.ID = B.ID 是比较常用的2个表关联.之前一直用这个,后来换了家公司发现这家公司的报表大多数都是用inner join,稍微研究了一下.查阅 ...

  7. JOIN中的外连接(external join)

    外连接: ---外连接并不要求连接的两表的每一条记录在对方表中都有一条匹配记录.要保留所有记录(甚至这条记录没有匹配的记录也要保留)的表成为保留表.外连接可以一句连接表保 留左表,右表和全部表的行二进 ...

  8. 44 答疑(三)--join的写法/Simple nested loop join的性能问题/Distinct和group by的性能/备库自增主键问题

    44 答疑(三) Join的写法 35节介绍了join执行顺序,加了straight_join,两个问题: --1 如果用left join,左边的表一定是驱动表吗 --2 如果两个表的join包含多 ...

  9. SQL——左连接(Left join)右连接(Right join)内连接(Inner join)

    概念(定义) ​首先还是介绍一下这三个的定义 ​Left join:即左连接,是以左表为基础,根据ON后给出的两表的条件将两表连接起来.结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足 ...

  10. webpack 参数1、context: path.resolve 2、path.join('', '..', 'aa') 3、 path.posix.join('static','/aa')

    1.context: path.resolve 项目入口路径 2. 3.

随机推荐

  1. 关于identifier was truncated to '255' characters

    学习c++过程中,遇到在VC中使用set时DEBUG模式出现的警告 identifier was truncated to '255' characters in the debug informat ...

  2. shufe前辈名师

    前辈名师 姓名 现职/原职 郭秉文 中国现代大学之父.国立东南大学校长.哥伦比亚大学教育学博士,该校第一任校长.为了纪念郭秉文先生,勉励优秀学子,郭夏瑜女士在上海财经大学等校设立了“郭秉文奖学金” 马 ...

  3. Swift 简单介绍 - 苹果最新的编程语言

    Swift 真的能够说是最新的编程语言了,2014wwdc刚刚公布,以下来了解一下都有哪些特点. 首先感谢原作者,主要内容是借鉴他的,參考链接 http://zh.lucida.me/blog/an- ...

  4. Cocos2d-x 地图步行实现1:图论Dijkstra算法

    下一节<Cocos2d-x 地图行走的实现2:SPFA算法>: http://blog.csdn.net/stevenkylelee/article/details/38440663 本文 ...

  5. shell编程三大神器之awk

  6. Ubuntu 组态 Tomcat而每天的错误解决

    统环境:Ubuntu 14.10 安装版本号:apache-tomcat-7.0.54.tar.gz 安装步骤: 1.下载 Tomcat 下载 apache-tomcat-7.0.54.tar.gz ...

  7. uva-442 Matrix Chain Multiplication

    Suppose you have to evaluate an expression like A*B*C*D*E where A,B,C,D and E are matrices. Since ma ...

  8. MVC Controller向View传值(ViewData与ViewBag)

    近期在开发项目中,使用的是ASP.NET MVC因为之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习. 一:使用 ViewData使用: public ActionResult I ...

  9. openstack dhcp调试

    openstack的dhcpserver默认值dnsmasq软件实施,经ps -ef | grep dnsmasq 查看.当虚拟机启动过程启动dhcp求,日志可以是在主机系统日志: May 23 22 ...

  10. aspx向silverlight传值

    原文:http://www.cnblogs.com/lensso/archive/2010/07/27/1785844.html 方法1: 向嵌入aspx页面的silverlight对象添加imnit ...