select a.id,
a.name,
b.age
from table a left join
table b on a.id=b.id
where a.dt='2021-04-25'
and b.dt='2021-04-25';
select a.id,
a.name,
c.age
from table a left join
(select b.id,b.age from table b
where b.dt='2021-04-25') c
on a.id=c.id
where a.dt='2021-04-25'
;
有啥区别?为啥会有这个区别?
没看懂你的问题,是否可以描述清楚一点,是什么跟什么的区别
第一种就是先关联再过滤,第二种是先过滤再关联。第一种全部关联再过滤,数据量大过滤得慢。第二种比较好,关联过滤后的数据,会执行快一点。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
你好,如果两张表都是分区表的话,那么两条语句的查询结果是不一样的,并且理论上来说第一条语句的查询结果可能大于第二条语句的查询结果。
如果需要结果一样的话,应该这样写
select a.id,
a.name,
b.age
from table a left join
table b on (a.id=b.id and a.dt = b.dt)
where a.dt='2021-04-25'
and b.dt='2021-04-25';
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y