介绍一下内联、左联、右联


Posted in 面试题 onDecember 31, 2013
一.先看一些最简单的例子

例子

Table A
aid adate
1 a1
2 a2
3 a3

TableB

bid bdate
1 b1
2 b2
4 b4
两个表a,b相连接,要取出id相同的字段
select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据.
此时的取出的是:
1 a1 b1
2 a2 b2

那么left join 指:
select * from a left join b on a.aid = b.bid
首先取出a表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
3 a3 空字符

同样的也有right join
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
4 空字符 b4

LEFT JOIN 或 LEFT OUTER JOIN。
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值

二. 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 数据类型数据的字段,将会发生错误。

Tags in this post...

面试题 相关文章推荐
腾讯技术类校园招聘笔试试题
May 06 面试题
写出SQL四条最基本的数据操作语句(DML)
Dec 12 面试题
Linux如何为某个操作添加别名
Feb 05 面试题
中科软测试工程师面试题
Jun 16 面试题
EJB timer的种类
Oct 28 面试题
EJB的角色和三个对象
Dec 31 面试题
Prototype如何更新局部页面
Mar 03 面试题
Boolean b = new Boolean(“abcde”); 会编译错误码
Nov 27 面试题
请说出以下代码输出什么
Aug 30 面试题
方正Java笔试题
Jul 03 面试题
关键字throw与throws的用法差异
Nov 22 面试题
如何用SQL语句进行模糊查找
Sep 25 #面试题
存储过程的优缺点是什么
Jan 10 #面试题
DBA数据库管理员JAVA程序员架构师必看
Feb 07 #面试题
介绍一下SQL Server里面的索引视图
Jul 31 #面试题
一组SQL面试题
Feb 15 #面试题
SQL Server里面什么样的视图才能创建索引
Apr 17 #面试题
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
Apr 28 #面试题
You might like
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
利用Python实现颜色色值转换的小工具
2016/10/27 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
python机器学习之神经网络(一)
2017/12/20 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
python机器人运动范围问题的解答
2019/04/29 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
神路信息Java面试题目
2013/03/31 面试题
《英英学古诗》教学反思
2014/04/11 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
硕士学位论文评语
2014/12/31 职场文书
投标售后服务承诺书
2015/04/29 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL
python如何查找列表中元素的位置
2022/05/30 Python