left join和sql left inner joinn的区别

博客访问: 36020
博文数量: 14
博客积分: 0
博客等级: 民兵
技术积分: 247
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: SQLServer
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接,内连接) 只返回两个表中联结字段相等的行,在表中存在至少一个匹配时,INNER JOIN 关键字返回行,INNER JOIN 与 JOIN 是相同的。
举例如下:
--------------------------------------------
表A记录如下:
aID     aNum
1     a
2     a
3     a
4     a
5     a
表B记录如下:
bID     bName
1     
2     
3     
4     
8     
--------------------------------------------
1.left join
sql语句如下:
select * from A
left join B
on A.aID = B.bID
aID     aNum     bID     bName
1     a    1     
2     a    2     
3     a    3     
4     a    4     
5     a    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     a    1     
2     a    2     
3     a    3     
4     a    4     
NULL     NULL     8     
(所影响的行数为 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     a    1     
2     a    2     
3     a    3     
4     a    4     
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
阅读(1493) | 评论(3) | 转发(2) |
相关热门文章
给主人留下些什么吧!~~
嘉宾点评:(请确认文章的原创性,违规三次将取消参赛资格)3种连接的区别是初学者经常容易混淆的概念,虽然从技术角看难度不大,但从讲授的角度看作者一定是很用心的。从措辞到例子,作者以精炼的语言解释了3种连接的区别,尤其是配以实际的测试数据,以非常形象的学习感受让初学者理解3种连接的区别
正在找两个表的查询,恰好看到了,CU真是技术宝库。
请登录后评论。数据库技术(27)
应用开发(162)
下面是例子分析表A记录如下: aID
a 表B记录如下: bID
创建这两个表SQL语句如下: CREATE TABLE
a aID int( 1 ) AUTO_INCREMENT PRIMARY KEY , aNum char( 20 ) ) CREATE TABLE b( bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , bName char( 20 )
) INSERT INTO a VALUES ( 1, 'a' ) , ( 2, 'a' ) , ( 3, 'a' ) , ( 4, 'a' ) , ( 5, 'a' ) ; INSERT INTO b VALUES ( 1, ' ' ) , ( 2, '' ) , ( 3, '' ) , ( 4, '' ) , ( 8, '' ) ; 实验如下: 1.left join(左联接) sql语句如下:
SELECT * FROM a LEFT JOIN
ON a.aID =b.bID 结果如下: aID
NULL (所影响的行数为 5 行) 结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的. 换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID). B表记录不足的地方均为NULL. 2.right join(右联接) sql语句如下:
* FROM a RIGHT JOING b
ON a.aID = b.bID 结果如下: aID
(所影响的行数为 5 行) 结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充. 3.inner join(相等联接或内联接) sql语句如下:
SELECT * FROM
a INNER JOIN
b ON a.aID =b.bID 等同于以下SQL句: SELECT *
FROM a,b WHERE a.aID = b.bID 结果如下: aID
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:941455次
积分:13038
积分:13038
排名:第675名
原创:381篇
转载:72篇
评论:337条
(1)(9)(6)(2)(3)(13)(8)(1)(4)(7)(11)(6)(4)(6)(1)(3)(6)(4)(4)(4)(1)(1)(1)(2)(2)(1)(3)(3)(2)(2)(3)(3)(6)(1)(3)(12)(2)(1)(1)(7)(3)(6)(7)(5)(3)(3)(2)(6)(15)(13)(5)(4)(5)(10)(5)(10)(11)(1)(8)(5)(1)(5)(4)(2)(3)(3)(4)(1)(3)(3)(5)(4)(7)(8)(1)(4)(6)(10)(2)(2)(1)(3)(3)(3)(12)(5)(6)(3)(1)(2)(5)(9)(4)(1)(1)(3)(1)(1)(1)(4)(2)(13)(5)(4)(6)(2)追逐内心的平和& & & & 通俗的讲:& & A&&left&&join&&&B&&&的连接的记录数与A表的记录数同& & A&&right&&join&&&B&&&的连接的记录数与B表的记录数同& & A&&left&&join&&&B&&&等价B&&right&&join&&&A& & table&&&A:& & Field_K,&&&Field_A& & 1&&&&&&&&&&&&&&&&&&&&&&&a& & 3&&&&&&&&&&&&&&&&&&&&&&&b& & 4&&&&&&&&&&&&&&&&&&&&&&&c& & table&&&B:& & Field_K,&&&Field_B& & 1&&&&&&&&&&&&&&&&&&&&&&&x& & 2&&&&&&&&&&&&&&&&&&&&&&&y& & 4&&&&&&&&&&&&&&&&&&&&&&&z& & select&&&a.Field_K,&&&a.Field_A,&&&b.Field_K,&&&b.Field_B& & from&&&a&&left&&join&&&b&&on&&&a.Field_K=b.Field_K& & Field_K&&&&&&&&&Field_A&&&&&&&&&Field_K&&&&&&&&&Field_B& & ----------&&&----------&&&----------&&&----------& & 1&&&&&&&&&&&&&&&&&&&&&a&&&&&&&&&&&&&&&&&&&&1&&&&&&&&&&&&&&&&&&&&&x& & 3&&&&&&&&&&&&&&&&&&&&&b&&&&&&&&&&&&&&&&&&&&NULL&&&&&&&&&&&&&&NULL& & 4&&&&&&&&&&&&&&&&&&&&&c&&&&&&&&&&&&&&&&&&&&4&&&&&&&&&&&&&&&&&&&&&z& & select&&&a.Field_K,&&&a.Field_A,&&&b.Field_K,&&&b.Field_B& & from&&&a&&right&&join&&&b&&on&&&a.Field_K=b.Field_K& & Field_K&&&&&&&&&Field_A&&&&&&&&&Field_K&&&&&&&&&Field_B& & ----------&&&----------&&&----------&&&----------& & 1&&&&&&&&&&&&&&&&&&&&&a&&&&&&&&&&&&&&&&&&&&1&&&&&&&&&&&&&&&&&&&&&x& & NULL&&&&&&&&&&&&&&NULL&&&&&&&&&&&&&&2&&&&&&&&&&&&&&&&&&&&&y& & 4&&&&&&&&&&&&&&&&&&&&&c&&&&&&&&&&&&&&&&&&&&4&&&&&&&&&&&&&&&&&&&&&z&&&&&--& & 举个例子:& & 假设a表和b表的数据是这样的。& & a&&&&&&&&&&&&&&&&&&&&&&&&&b& & id&&&&&name  id&&&&&stock& & 1  a&&&&&&&&&&&&1&&&&&&&&15& & 2&&&&&&&&&b&&&&&&&&&&&&2&&&&&&&&50& & 3&&&&&&&&&c& & select&&*&&from&&&a&&inner&&join&&&b&&on&&&a.id=b.id& & 这个语法是连接查询中的内连接,它产生的结果是& & 两个表相匹配的记录出现在结果列表中。& & 根据上面的表,出现的结果是这样的& & a.id&&&&&name&&&&&b.id&&&&&stock& & 1&&&&&a&&&&&&&&&&&&1&&&&&&&&15& & 2&&&&&&&&&&&&&b&&&&&&&&&&&&2&&&&&&&&50& & ----------------------------& & select&&*&&from&&&a,b&&where&&&a.id=b.id& & 这个语法是内连接的另外一种写法,其执行结果与inner&&join&&&一样& & --------------------------------& & select&&*&&from&&&a&&left/right&&join&&&b&&on&&&a.id=b.id& & 这个是外连接语法中的左外连接或右外连接& & 如果是左外连接的话,它将显示a表的所有记录,& & select&&&a.*,b.*&&from&&&a&&left&&join&&&b&&on&&&a.id=b.id& & 查询的结果是这样的:& & a.id&&&&&name&&&&&b.id&&&&&stock& & 1&&&&&&&a&&&&&&&&1&&&&&&&&&&&&15& & 2&&&&&&&&&&&&&&&b&&&&&&&&2&&&&&&&&&&&&50& & 3&&&&&&&&&&&&&&&c&&&&&&null&&&&&&&&null& & --------------------------------------------& & 如果是右外连接的话,它将显示b表的所有记录,& & select&&&a.*,b.*&&from&&&a&&right&&join&&&b&&on&&&a.id=b.id& & 查询的结果是这样的:& & a.id&&&&&name&&&&&b.id&&&&&stock& & 1&&&&&&&a&&&&&&&&1&&&&&&&&&&&&15& & 2&&&&&&&&&&&&&&&b&&&&&&&&2&&&&&&&&&&&&50& & --& & select&&&a.*,b.*&&from&&&a&&left&&join&&&b&&on&&&a.k&&=&&&b.k& & select&&&a.*,b.*&&from&&&a&&left&&outer&&join&&&b&&on&&&a.k&&=b.k& & ----------上面两种一样left&&&join是left&&&outer&&&join的简写& & select&&&a.*,b.*&&from&&&a&&left&&inner&&join&&&b&&on&&&a.k&&=&&&b.k& & 没有这种写法,错误的语句.& & QQ空间
百度搜藏更多& & Tags:oracle left join& & 复制链接收藏本文打印本文关闭本文返回首页& & 上一篇:oracle修改SGA后无法启动问题分析及解决方法& & 下一篇:Oracle排名函数(Rank)实例详解& & 相关文章新Orcas语言特性-查询句法ORACLE常见错误代码的分析与解决(三)[Oracle] RAC 之 - 负载均衡深入解析Oracle 存储过程教程Oracle随机函数之dbms_random使用详解oracle与mysql的视频教程下载地址分享使用Oracle的Decode函数进行多值判断Oracle数据库的备份与恢复oracle10g全文索引自动同步语句使用方法Oracle存储过程的编写经验与优化措施(分享)& & 文章评论& & 最 近 更 新& & oracle用什么SQL语句判断表存不存在Oracle中instr函数使用方法Oracle SID存在解決方法plsql与tsql的语法不同oracle 重置sys密码的方法介绍Oracle存储过程基本语法介绍Oracle 启动例程 STARTUP参数说明group by,having,order by的用法详解Oracle回滚段的概念,用法和规划及问题的oracle 存储过程和触发器复制数据& & 热 点 排 行& & ORACLE 10g 安装教程[图文]oracle常用sql语句oracle sqlplus 常用命令大全oracle 触发器 学习笔记ORACLE常用数值函数、转换函数、Oracle数据库下载及安装图文操作oracle中的视图详解oracle 查询表名以及表的列名ORACLE数据库查看执行计划的方法oracle 存储过程和函数例子
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.003 收益
论文写作技巧inner left .... JION 的区别_abap吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,374贴子:
inner left .... JION 的区别收藏
昨天群里有人问的,其实很简单:来源: &inner join, left join, right join, full join 的区别_SAP169_新浪博客& 说的很清楚一看就懂。四种jion的区别:[TEST@ORA1] SQL&select *编号 姓名---- ----------1000 张三2000 李四3000 王五[TEST@ORA1] SQL&select *编号 商品---- ----------1000 电视机2000 录像机4000 自行车[TEST@ORA1] SQL&set null 空值--这里为了显示方面我把NULL定义成了[空值][TEST@ORA1] SQL&select a.*,b.* from a inner join b on a.编号=b.编号;编号 姓名
编号 商品---- ---------- ---- ----------1000 张三
1000 电视机2000 李四
2000 录像机[TEST@ORA1] SQL&select a.*,b.* from a left join b on a.编号=b.编号;编号 姓名
编号 商品---- ---------- ---- ----------1000 张三
1000 电视机2000 李四
2000 录像机3000 王五
空值 空值[TEST@ORA1] SQL&select a.*,b.* from a right join b on a.编号=b.编号;编号 姓名
编号 商品---- ---------- ---- ----------1000 张三
1000 电视机2000 李四
2000 录像机空值 空值
4000 自行车[TEST@ORA1] SQL&select a.*,b.* from a full join b on a.编号=b.编号;编号 姓名
编号 商品---- ---------- ---- ----------1000 张三
1000 电视机2000 李四
2000 录像机3000 王五
空值 空值空值 空值
4000 自行车
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 left join 的文章

 

随机推荐