1. 苏葳的备忘录首页
  2. 数据库

SQL的join执行时,如何先where 后on

sql  joinSQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。常用的Join操作有:内联接、外联接和交叉联接等。如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的数据,这时我们应该考虑使用Join,因为Join操作具有联接表或函数进行查询的特性。多种sql实现,包括oracle和ms sql server都证明了其执行次序是先on后where,即一个带外连接的语句:

select * from a1 a left join a2 b on a.aa=b.cc where b.cc='3'

中,是先执行外连接,再用where 条件筛选。然而毕竟大量数据的连接会耗时较长,在语义允许的情况下,如果想先对某表筛选,再连接,应该如何操作? 可写成如下形式:

select * from a1 a left join (select * from a2 where a2.cc='3') b on a.aa=b.cc;

当然,先where还是先on的结果往往是不同的。这里只是指出如何强制使筛选先发生的方法罢了。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/408.html

发表评论

邮箱地址不会被公开。 必填项已用*标注