Одним словом: удобочитаемость.
Выполнение следующего кода:
create table #threads (
id int
)
create table #posts (
id int,
thread_id int,
content varchar(10)
)
insert into #threads values (1)
insert into #threads values (2)
insert into #posts values (1, 1, 'Stack')
insert into #posts values (2, 2, 'OverFlow')
SELECT #threads.id AS 'threads.id' , #posts.id , #posts.content
FROM #threads
JOIN #posts ON #threads.id = #posts.thread_id
SELECT #threads.id AS 'threads.id' , #posts.id , #posts.content
FROM #threads, #posts
WHERE #threads.id = #posts.thread_id
drop table #threads
drop table #posts
в http://data.stackexchange.com/stackoverflow/query/new вы получите тот же план выполнения:)
Единственная реальная разница заключается в том, что inner join
- это ANSI , а from #threads, #posts
- это Синтаксис Transact-SQL.