这个问题在这里已经有答案了:
内部连接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;
这两个查询返回相同的结果集,从而引出相关问题:
两个查询中哪一个更好?
它们在执行时间上有区别吗?
为什么当我搜索连接示例时,它们都使用第一种方法?
我在大学里学过第二种类型的查询——用错了吗?
1条答案
按热度按时间doinxwow1#
如果使用左外联接或右外联接,则会出现这种差异。过滤位置在这里很重要,因为on子句中指定的条件是在进行连接之前应用的。where子句中提供的针对外部联接表的条件将在进行联接后应用。这会产生非常不同的结果集。
相比之下,对于内部联接,如果在on或where子句中提供了条件,则结果是相同的。