sql—这两个查询如何返回相同的结果但使用不同的联接(隐式查询与显式查询)

gdrx4gfi  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(337)

这个问题在这里已经有答案了

内部连接vs where(19个答案)
11个月前关门了。
我有两张table:订单和顾客。订单具有来自客户的外键:

我可以用两种不同的方式加入他们:
第一条路

Select *
from [Order] 
join Customer
on [Order].Customer_id = Customer.id;

第二条路

Select * 
from [Order],Customer
where [Order].Customer_id = Customer.id;

这两个查询返回相同的结果集,从而引出相关问题:
两个查询中哪一个更好?
它们在执行时间上有区别吗?
为什么当我搜索连接示例时,它们都使用第一种方法?
我在大学里学过第二种类型的查询——用错了吗?

doinxwow

doinxwow1#

如果使用左外联接或右外联接,则会出现这种差异。过滤位置在这里很重要,因为on子句中指定的条件是在进行连接之前应用的。where子句中提供的针对外部联接表的条件将在进行联接后应用。这会产生非常不同的结果集。
相比之下,对于内部联接,如果在on或where子句中提供了条件,则结果是相同的。

相关问题