JOIN和ON之间的T-SQL JOIN

时间:2014-10-29 19:52:03

标签: sql sql-server

有人能详细说明这两者之间会有什么不同吗?

SELECT *
FROM dbo.UserProducts AS UP
INNER JOIN dbo.Products AS P
    ON P.ProductID = UP.ProductID
INNER JOIN dbo.Industry AS I
    ON I.IndustryCode = P.IndustryCode



SELECT *
FROM dbo.UserProducts AS UP
INNER JOIN dbo.Products AS P
    INNER JOIN dbo.Industry AS I
        ON I.IndustryCode = P.IndustryCode
    ON P.ProductID = UP.ProductID

我已经看到MSDN上解释了第二个选项,但是我再也找不到它了,我认为它是使用LEFT JOINS。

2 个答案:

答案 0 :(得分:3)

grammar for FROM解释了这一点。

语法为FROM { <table_source> }

<table_source>可以是几件事之一,包括<joined_table>

<joined_table>可以包含:

<table_source> <join_type> <table_source> ON <search_condition>

因此,<table_source>可以是<table_source>的加入,{{1}}本身可以是加入等。

您的第一个例子是&#34; UserProducts,加入产品;和产品加入了Industry&#34;。

第二个是&#34; UserProducts,加入(产品和行业联合在一起)&#34;

答案 1 :(得分:1)

从逻辑的角度来看,两个例子之间没有什么不同,一个更容易阅读。

有时将所有条件放在所有连接下面实际上是有意义的:

SELECT *
FROM table1 a
LEFT JOIN table2 b
LEFT JOIN table3 c
  ON     a.col1 = c.col1
  ON     b.ID = c.ID

但总的来说,当标准紧跟JOIN

之后,它更容易阅读