sql中的left join、right join、inner join
sql中的left join、right join、inner join
转自:http://www.cnblogs.com/pcjim/articles/799302.html
- 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 数据类型数据的字段,将会发生错误.
sql中的left join、right join、inner join相关推荐
- SQL中的多表查询,以及JOIN的顺序重要么?
说法是,一般来说,JOIN的顺序不重要,除非你要自己定制driving table. 示例: SELECT a.account_id, c.fed_id, e.fname, e.lname-> ...
- SQL——左连接(Left join)右连接(Right join)内连接(Inner join) 笛卡尔积(Cross Join)
Left join 即左连接,是以左表为基础,根据ON后给出的两表的条件将两表连接起来.结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分.左连接全称为左外连接,是外连接的一种. ...
- SQL中的笛卡尔你真的懂吗?
原文链接:https://www.cnblogs.com/CareySon/archive/2010/04/13/1711095.html 什么是笛卡尔积? 笛卡尔积是指在数学中,两个集合X和Y的笛卡 ...
- SQL 中left join ,inner join,right join的区别
2019独角兽企业重金招聘Python工程师标准>>> sql中存在有左连接 插入 右连接 sql语句 left join ,inner join,right join 进行 wh ...
- SQL中的join操作总结(非常好)
1.1.1 摘要 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接.外联接和交叉联接等.如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的 ...
- 【转载】SQL中使用update inner join和delete inner join
原文地址:SQL中使用update inner join和delete inner join Update XXX set XXX where 这种写法大家肯定都知道,才发现update和delete ...
- Linq To Sql中实现Left Join与Inner Join使用Linq语法与lambda表达式
当前有两个表,sgroup与sgroupuser,两者通过gKey关联,而sgroup表记录的是组,而sgroupuser记录是组中的用户,因此在sgroupuser中不一定有数据.需要使用Left ...
- Spark SQL中出现 CROSS JOIN 问题解决
Spark SQL中出现 CROSS JOIN 问题解决 参考文章: (1)Spark SQL中出现 CROSS JOIN 问题解决 (2)https://www.cnblogs.com/yjd_hy ...
- sql中join的各种用法
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) ...
- SQL中JOIN 的用法
关于sql语句中的连接(join)关键字,是较为常用而又不太容易理解的关键字,下面这个例子给出了一个简单的解释 --建表table1,table2: create table table1(id in ...
最新文章
- 线性期望(BUPT2015校赛.F)
- Integer缓存池
- 职称计算机考试有哪些题,职称计算机考试判断复习题「有答案」
- 20-30-010-安装-kafka-manager
- linux shell学习三
- linux 取文件字节数,如何在Linux上的C中获取文件中的字符数(而不是字节数)
- Think PHP url的四种访问方法。
- [WebView五学习]:调试Web Apps
- 俞扬 新书_哇,太好了...新书
- 蓝桥杯 -罗马数字问题
- springboot 设置全局字符编码,解决乱码问题
- [个人笔记]FDTD100
- 基于POC的不可能三角解决方案:深度解析存储公链Subspace Network
- python用户名和密码登录_Python爬虫:账号密码登入扇贝
- 【寒江雪】Go实现组合模式
- i2c的IOL及上拉电阻
- 界面原型设计工具 Balsamiq Mockups
- Google GMS认证测试几个名词
- 如何实现一个直播APP
- windows和linux下简单的软件级调整相机曝光时间(或其他参数)的方式
热门文章
- oracle主机名的脚本,一个开启Oracle服务和更改主机名的脚本-Oracle
- android系统里面的mic是哪个app_安利 | 那些错过会后悔一年的法语APP
- python列表切片后得到剩余列表_python列表切片和嵌套列表取值操作详解
- hive数据库numeric_hive中常用的函数
- 《Neural Networks for Machine Learning》学习二
- LIBSVM在MATLAB中的使用及SVM最优参数选取示例代码
- activiti 视图
- redis 零散知识
- jQuery笔记总结
- 使用Instant Client配置PL/SQL Developer