oracle sql 左连接 与LEFT JOIN区别

2025-05-10 17:48:33
推荐回答(3个)
回答1:

这个比较细微,我尽量回答。
总的来说,2种写法,在oracle 里,效率和性能区别不大。
如果非要比较的话,大概有以下区别:
(+) 和 left join ,在检索显示的字段很少的时候,或者干脆就是检索count(*)的时候,在效率和性能上,是一样,甚至cpucost都完全一样;
但是在检索显示的字段比较多得时候,第一次执行,left join 比(+)的效率高;当然,执行第二次之后,由于数据已经到了缓存,区别也不明显了,基本是一致的。

回答2:

sql左连接与left join是一个意思。

用数据举例比较容易理解:

如:表1中有数据

班级id  班级名称

1            一班

2            二班


表2:

学生id     学生姓名   所属班级id

1                张三               1

2                李四               1


如果查询每个班级总人数,不用左连接

select a.班级名称,sum(case when a.班级id=b.所属班级id then 1 else 0 end) 人数 from 表1 a,表2 b where a.班级id=b.所属班级id group by a.班级名称

此时结果:

班级名称     人数

一班               2



如果用左连接

select a.班级名称,sum(case when a.班级id=b.所属班级id then 1 else 0 end) 人数 from 表1 a left join 表2 b on a.班级id=b.所属班级id group by a.班级名称

此时结果:

班级名称     人数

一班               2

二班               0


所以左连接就是以左表为基准,来显示全部数据,而不用左连接则只显示能关联上的数据。

回答3:

我觉得没有差别 只是写法有所不同 效率是一样的