楼主: dingjun123

[精华] left join,right join,full join的一点总结

[复制链接]
求职 : SAP实施
论坛徽章:
261
土豪章
日期:2018-07-10 16:19:05ITPUB18周年纪念章
日期:2018-09-17 10:09:49ITPUB18周年纪念章
日期:2018-09-17 10:12:57妮可·罗宾
日期:2018-10-28 13:07:10ITPUB18周年纪念章
日期:2018-11-13 15:31:24ITPUB18周年纪念章
日期:2018-11-13 15:40:4519周年集字徽章-庆
日期:2019-09-06 18:30:1219周年集字徽章-19
日期:2021-02-03 16:43:4820周年集字徽章-年	
日期:2023-07-21 18:25:26
21#
发表于 2011-3-26 11:59 | 只看该作者
收藏了,谢谢分享...

使用道具 举报

回复
论坛徽章:
17
生肖徽章2007版:蛇
日期:2009-03-10 21:14:362014年世界杯参赛球队: 伊朗
日期:2014-06-13 11:29:242014年新春福章
日期:2014-02-22 15:22:32马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26ITPUB十周年纪念徽章
日期:2011-09-27 16:32:49双黄蛋
日期:2011-08-27 13:04:11
22#
发表于 2011-3-26 17:28 | 只看该作者
学习了,lz强悍

使用道具 举报

回复
论坛徽章:
3
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522011新春纪念徽章
日期:2011-02-18 11:42:482011新春纪念徽章
日期:2011-03-24 23:41:16
23#
发表于 2011-3-26 21:37 | 只看该作者
学习!

使用道具 举报

回复
论坛徽章:
13
2010新春纪念徽章
日期:2010-03-01 11:04:59技术图书徽章
日期:2018-03-01 10:21:49秀才
日期:2018-03-01 10:21:252015年新春福章
日期:2015-03-06 11:58:18喜羊羊
日期:2015-03-04 14:52:46优秀写手
日期:2014-04-22 06:00:18马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:082013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:56:01
24#
发表于 2011-3-27 11:49 | 只看该作者
Thanks everybody

使用道具 举报

回复
论坛徽章:
2
懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18
25#
发表于 2011-3-28 10:30 | 只看该作者
--正确了,又有问题了,为什么上面的不正确,下面的
SQL> SELECT a.ID,b.ID
  2  FROM a,b WHERE a.ID(+)=b.ID AND a.NAME(+)='a';

        ID         ID
---------- ----------
         1          1
         1          1
                     2

可以帮忙解释下这个吗?为什么b表ID=4的没选上呀

应该是有ID=4的,还有后面这个例子报这个错

SQL> SELECT * FROM a,b,c WHERE a.ID(+)=b.ID AND a.ID(+)=c.ID;
SELECT * FROM a,b,c WHERE a.ID(+)=b.ID AND a.ID(+)=c.ID
                                 *
第 1 行出现错误:
ORA-01417: 表可以外部连接到至多一个其它的表

[ 本帖最后由 huangzhiyun123 于 2011-3-28 11:03 编辑 ]

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
26#
 楼主| 发表于 2011-3-28 11:24 | 只看该作者
原帖由 huangzhiyun123 于 2011-3-28 10:30 发表
--正确了,又有问题了,为什么上面的不正确,下面的
SQL> SELECT a.ID,b.ID
  2  FROM a,b WHERE a.ID(+)=b.ID AND a.NAME(+)='a';

        ID         ID
---------- ----------
         1          1
         1          1
                     2

可以帮忙解释下这个吗?为什么b表ID=4的没选上呀

应该是有ID=4的,还有后面这个例子报这个错

SQL> SELECT * FROM a,b,c WHERE a.ID(+)=b.ID AND a.ID(+)=c.ID;
SELECT * FROM a,b,c WHERE a.ID(+)=b.ID AND a.ID(+)=c.ID
                                 *
第 1 行出现错误:
ORA-01417: 表可以外部连接到至多一个其它的表


你select * from b看看

第2个当然报错啊,但是用ansi语法就不会报错的

使用道具 举报

回复
论坛徽章:
2
懒羊羊
日期:2015-03-04 14:52:112015年新春福章
日期:2015-03-06 11:58:18
27#
发表于 2011-3-28 13:41 | 只看该作者
呵。多谢指教啦。

楼主上面的都介绍full join 能不能举一两个left outer join 或者right outer join的例子呀?

请问下用left outer join 与(+)是不是等效的呀
SQL> SELECT a.ID,b.ID
  2  FROM a RIGHT JOIN b
  3  ON a.ID=b.ID AND a.NAME='a';

        ID         ID
---------- ----------
         1          1
         1          1
                    4
                    2

SQL> SELECT a.ID,b.ID
  2  from a,b
  3  where a.id(+)=b.id
  4  and a.name='a';

        ID         ID
---------- ----------
         1          1
         1          1
可不可以说用left join得到的结果集一般比用(+)的大呀

[ 本帖最后由 huangzhiyun123 于 2011-3-28 14:05 编辑 ]

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
28#
 楼主| 发表于 2011-3-28 15:02 | 只看该作者
你的问题我里面已经说了,你看仔细啊where a.id(+)=b.id
    and a.name='a';

把a.name改为a.name(+)就等价了。

使用道具 举报

回复
论坛徽章:
8
2010广州亚运会纪念徽章:体操
日期:2011-05-02 23:25:242010广州亚运会纪念徽章:跆拳道
日期:2011-05-13 08:55:04蛋疼蛋
日期:2011-08-03 13:42:282012新春纪念徽章
日期:2012-01-04 11:53:54复活蛋
日期:2012-02-01 10:07:12咸鸭蛋
日期:2012-02-20 13:03:46马上有车
日期:2014-04-02 13:06:45问答徽章
日期:2014-04-18 18:01:23
29#
发表于 2011-4-26 09:17 | 只看该作者
thanks

使用道具 举报

回复
论坛徽章:
0
30#
发表于 2011-5-24 10:52 | 只看该作者
支持原创

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表