这两个查询如何返回相同的结果,但使用不同的连接方式?(隐式 vs. 显式查询)

9 浏览
0 Comments

这两个查询如何返回相同的结果,但使用不同的连接方式?(隐式 vs. 显式查询)

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

Inner join vs Where

我有两个表:Order和Customer。Order有一个来自Customer的外键:

\"enter

我可以用两种不同的方式来连接它们:

第一种方式

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

第二种方式

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

这两个查询返回相同的结果集,这导致了我相关的问题:

  1. 哪一个查询是更好的?
  2. 它们之间在执行时间上是否有差别?
  3. 为什么当我搜索连接示例时,它们都使用第一种方式?
  4. 我在大学里学到了第二种类型的查询 - 使用它是否有误?
admin 更改状态以发布 2023年5月21日
0
0 Comments

如果你正在使用LEFT OUTER JOIN或RIGHT OUTER JOIN,那么就会出现差异。在这种情况下,筛选位置非常重要,因为ON子句中指定的条件在JOIN之前应用。在WHERE子句中提供的针对OUTER JOIN表的条件是在JOIN之后应用的。这可能会产生非常不同的结果集。

相比之下,对于INNER JOIN,如果在ON子句或WHERE子句中提供了条件,结果将是相同的。

0