暂无图片
left join
我来答
分享
helloword
2022-11-09
left join

oracle 11G  自带scott 用户下的 emp表

--sql1

select * from emp e1 left join emp e2
on e2.empno='7369';

-- sql2

select * from emp e1 left join emp e2
on e1.empno='7369';

请问下,left join  on 为啥可以这么写,on 后面不是应该是两个表的关联条件吗? sql1和sql2 的查询出来的含义是啥,求解答

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
张sir

1、如果不加on,就是个笛卡尔积,两个表相乘。

2、加on,就是在笛卡尔积的基础上,按on的条件筛选。

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
helloword
题主
2022-11-09
那为啥可以直接 on empno='7369' 而不是 empno=empno 了
张sir
答主
2022-11-09
empno=empno就是有关联条件了,就不是笛卡尔积了,
helloword
题主
2022-11-09
请问下sql2,是什么意思? 是查询出e1 表的empno='7369' 和 e2表关联吗
展开全部评论(4条)
Thomas

SQL> select * from tbtb;

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


SQL> select * from tbtb t1 left join tbtb t2 on t1.id=2;

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

SQL> select * from tbtb t1 left join tbtb t2 on t2.id=2;

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


说实话,这种古怪的写法,不研究也罢。因为在实际业务中,怎么可能出现这么奇葩的写法呢?从这个例子来看,第一个SQL的结果也比较烧脑。既然都 设定t1.id=2了,但 t1.id=2和t1.id=3的记录也输出了。 

暂无图片 评论
暂无图片 有用 0
打赏 0
愤怒的蜗牛
2022-11-10
回答交流
Markdown


请输入正文
提交
相关推荐
怎么查看过期的分区,分区是基于事件来分的。
回答 3
查HIGHVALUEselecttablename,PARTITIONNAME,PARTITIONPOSITION,highvaluefromdbatabpartitions;selecttablen
oracle 单张表查询突然变慢,其他表查询正常
回答 4
给几个方向:表里是不是有lob类型字段表是不是有高水位
oracle执行计划问题
回答 5
原SQL将righ join改成inner join是没问题的, 因为这个right join本身就是一个inner join的逻辑, 但是
集群异常后一个节点无法启动,故障节点找不见/u01/app/11.2.0/grid目录
回答 5
如果是删除了还有办法恢复嘛,还是只能重新部署集群
enq: TX - row lock contention
回答 5
已采纳
你这是都在抢占行的热数据,应该没的解决,他们不想改逻辑,你也没办法,到时候谁痛谁着急:)
服务器本地读非常高,怎么快速定位
回答 1
每个实例都拉一个AWR报告,知道时间点就按时间点拉,越短越好
Oracle清空数据文件,包含临时段
回答 2
已采纳
临时段的清理方法1、如果条件允许的话可以通过重启实例来释放2、不能重启实例的情况新建临时表空间;指定default临时表空间删除原来的临时表空间
怎么计算2个16进制数的差?
回答 1
暂无文字回复
ORA-00600: internal error code, arguments: [3716]
回答 4
上传附件:zzdb2ora17214i6109930.trc
oracle 11g禁用约束问题
回答 1
类似主键约束,唯一约束等,约束创建出来后,oracle会帮你做了建立和加入索引当然如果你手工创建索引,再加入主键约束,删除/禁用约束时,就不会删除索引。对于Oracle自动(递归)创建出来的唯一索引,