是否可以将这两个查询视为相同?

时间:2019-04-13 12:30:35

标签: sql-server join select syntax

假设我有两个表Customers $,Orders $。我想知道,这两个结果(如下所示)都相同。因此,我可以使用其中任何一种还是第二种方法代替内部联接。

select Orders$.OrderDate,
       Customers$.ContactName
from Orders$
     inner join Customers$ on Orders$.CustomerID = Customers$.CustomerID;

select Orders$.OrderDate,
       Customers$.ContactName
from Orders$,Customers$
where Orders$.CustomerID = Customers$.CustomerID;

但是当我从以下位置解决问题时- https://www.hackerrank.com/challenges/average-population-of-each-continent/problem

所以两者都可以正常工作,但是第二个却不如您在您的评论中所说的那样,两者都是一样的

select country.continent , round(avg(city.population -.5 , 0))  from country, city where country.code=city.countrycode group by country.continent;

select country.continent, round(avg(city.population - .5),0) from country inner join city on country.code=city.countrycode group by country.continent

1 个答案:

答案 0 :(得分:3)

这两个查询是等效的。尽管两者在技术上都是正确的,但现代语法鼓励使用显式连接,因此您应该坚持使用第一个变体。