在sql中,在外连接时,如果想先经where筛选表格,再用筛选后的表格进行外连接,如下写法是错误的:
![](https://img-blog.csdnimg.cn/img_convert/3c68ccc61ee176057970bf20ff0cfc5c.png)
我们想先对s表和d表进行筛选,再将这两个表外连接。但上面这个效果和内连接(INNER JOIN)是一样的!在大多数的SQL实现中,这种现象实际上是比较常见的。之所以发生这种情况,是因为会先执行JOIN语句,然后再将结果通过WHERE 语句进行过滤。
有一个适用于所有种类连接的解决方案,那就是使用嵌套SELECT语句:
![](https://img-blog.csdnimg.cn/img_convert/49db8d85e79b7804b0970d63d7a9324e.png)
在sql中,在外连接时,如果想先经where筛选表格,再用筛选后的表格进行外连接,如下写法是错误的:
我们想先对s表和d表进行筛选,再将这两个表外连接。但上面这个效果和内连接(INNER JOIN)是一样的!在大多数的SQL实现中,这种现象实际上是比较常见的。之所以发生这种情况,是因为会先执行JOIN语句,然后再将结果通过WHERE 语句进行过滤。
有一个适用于所有种类连接的解决方案,那就是使用嵌套SELECT语句: