参考:

https://www.cnblogs.com/lijingran/p/9001302.html

https://www.cnblogs.com/assasion/p/7768931.html

因为单纯的select * from a,b是笛卡尔乘积。比如a表有5条数据,b表有3条数据,那么最后的结果有5*3=15条数据。

所以需要对两个表进行关联:

select * from a,b where a.id = b.id

此时就等价于:

select * from a inner join b on a.id = b.id。即内连接。

1.left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录

2.right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

3.inner join(内连接) 只返回两个表中联结字段相等的行

4.full join(全连接) 返回两个表中所有的行

sql语句如下:

SELECT * from A
LEFT JOIN B 
ON A.aID = B.bID

举例如下: 
--------------------------------------------
表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(左联接结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL

结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.

--------------------------------------------

2.right join(右联接) 结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
NULL     NULL     8     2006032408

结果说明:
和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

--------------------------------------------

3.inner join(等值连接结果如下:
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和right join的交集。

注释:INNER JOIN 与 JOIN 是相同的。
--------------------------------------------

 

4.full join(全联接) 结果如下:

aID     aNum     bID     bName

1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404

5     a20050115    NULL     NULL

NULL     NULL     8     2006032408

结果说明:
FULL JOIN 关键字会从左表 (A) 和右表 (B) 那里返回所有的行。如果 "A" 中的行在表 "B" 中没有匹配,或者如果 "B" 中的行在表 "A" 中没有匹配,这些行同样会列出。

--------------------------------------------

ps:本人初学SQL server,有不足之处,还望不吝赐教,谢谢。

2019-10-14  19:34:14 第一次改

SQL-连接查询:left join,right join,inner join,full join之间的区别相关推荐

  1. SQL连接查询_ INNER JOIN

    常用的JOIN语句 梗概:不同的 SQL JOIN 除了我们在上面的例子中使用的 INNER JOIN(内连接),我们还可以使用其他几种连接. 下面列出了您可以使用的 JOIN 类型,以及它们之间的差 ...

  2. mysql sql 连接查询语句_Mysql——sql数据库中的连接查询

    1.1.1   交叉连接(CROSS JOIN) 交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积. 例如:下面的语句1和语句2的结果是相同的. ...

  3. SQL连接查询深度探险

    测试环境: Windows XP Profession MySQL 5.0.45 Oracle 9i DB2 UDB 9.1 测试的SQL脚本如下:此脚本适合MySQL.DB2,如果要在Oracle上 ...

  4. SQL连接查询和嵌套查询详解

    连接查询 若一个查询同时涉及两个或两个以上的表,则称之为连接查询.连接查询是数据库中最最要的查询, 包括: 1.等值连接查询 2.自然连接查询 3.非等值连接查询 4.自身连接查询 5.外连接查询 6 ...

  5. SQL连接查询和笛卡尔积

    使用连接查询查出来的结果不是简单地两个表的笛卡尔积,而是包含了所有匹配条件的结果集. 连接查询是通过将两个或多个表的数据根据指定的条件进行关联,从而返回一张包含了两个或多个表的字段的结果集.连接查询的 ...

  6. Oracle数据库之SQL连接查询

    前言 现实中有这么一种需求,有时候我们需要查询的数据是在多个表中的,那么如何从多个表中查询数据 呢?这就需要通过表的连接来实现查询了. 笛卡尔积 在定义连接之前我们需要简单的了解一下笛卡尔积,笔者不会 ...

  7. join和子查询效率_SparkSQL连接查询中的谓词下推处理(上)

    SparkSQL是架构在 Spark 计算框架之上的分布式 Sql 引擎,使用 DataFrame 和 DataSet 承载结构化和半结构化数据来实现数据复杂查询处理,提供的 DSL可以直接使用 sc ...

  8. 查询oracle 表达小,oracle中sql语句小练习(使用连接查询)

    假设A(m,n,p),B(m,n,p) --1.A表中有某一项m而B表中没有 使用左连接查询: select a.* from A a left join B b on a.m=b.m where b ...

  9. 浅谈sql之连接查询

    SQL之连接查询 一.连接查询的分类 sql中将连接查询分成四类: 内链接 外连接 左外连接 右外连接 自然连接 交叉连接 二.连接查询的分类 数据库表如下: 1.学生表 2.老师表 3.班级表 表用 ...

  10. 【大数据】SparkSql 连接查询中的谓词下推处理 (一)

    本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/YPN85WBNcnhk8xKjTPTa2g 作者:李勇 目录: 1.SparkSql 2.连接查询和 ...

最新文章

  1. 如果有一天,我老无所依,请把我丢在迪拜捡垃圾……
  2. GlobalPointer:用统一的方式处理嵌套和非嵌套NER
  3. 担心被绑架?多云战略为企业解烦忧!
  4. java基础:数据类型
  5. PHP学习笔记--抽象类和抽象方法的应用
  6. 算法竞赛进阶指南——后缀数组
  7. calc() ---一个会计算的css属性
  8. Linux c 算法与数据结构--双向链表
  9. python免费开源工具推荐_年薪200万的程序员,推荐这10大Python免费开源工具!
  10. 长大了,也弄丢了很多东西
  11. 为什么自己编写的页面总是在那里抖动_SEO排名,为什么旧页面比新内容排名高?...
  12. Http Module 介绍[转]
  13. 【论文写作】SSM超市管理系统如何写可行性分析
  14. 高性能Mysql(一)
  15. 使用C# 开始第一个QQ机器人
  16. python饼图 立体_【Python基础】惊叹,Pyecharts绘制饼图原来可以如此漂亮!
  17. 期货期权股票资管分仓系统(子账户系统、风控系统)的功能介绍
  18. 性能工具之Java分析工具BTrace入门
  19. 常见基础注入类型-SQL注入-web安全
  20. win11解决右键卡顿

热门文章

  1. Python实例讲解 -- tkinter canvas (设置背景图片及文字)
  2. 点击锚点链接时页面滚动的特效(Javascript Smooth Scroll)
  3. tomcat调优方案
  4. 机器学习速成课程 | 练习 | Google Development——编程练习:稀疏性和 L1 正则化
  5. sqlserver函数 1209
  6. html盒子模型 1209
  7. 新建子窗体 1124
  8. flask-稿件-环境依赖包的生成与安装-flask虚拟环境的布局
  9. 爬虫-爬取博客的演练-首页内容保存-首页文章列表与url
  10. 数据结构与算法-时间复杂度