sql-server - mssql - sql server select inner join where



SQL Server中的左加入與左外部加入 (10)

LEFT JOIN以第一個(最左邊的)表格和第二個(最右邊的)表格記錄開始執行連接。

LEFT JOINLEFT OUTER JOIN是一樣的。

根據DoFactory

LEFT JOINLEFT OUTER JOIN什麼區別?


Answer #1

左連接和左外連接有什麼區別?

沒什麼LEFT JOINLEFT OUTER JOIN是等價的。


Answer #2

只有3個連接:

  • A)交叉連接=笛卡爾(例如:表A,表B)
  • B)Inner Join = JOIN(例如:表A加入/內部加入表B)
  • C)外連接:

       There are three type of outer join
       1)  Left Outer Join     = Left Join
       2)  Right Outer Join    = Right Join
       3)  Full Outer Join     = Full Join    
    

希望它能幫上忙。


Answer #3

Left JoinLeft Outer Join一樣的 。 前者是後者的簡寫。 關於Right JoinRight Outer Join關係也是如此。 示範將說明平等。 每個查詢的工作示例都通過SQL Fiddle提供。 這個工具將允許雙手操作查詢。

特定

左連接左外連接

結果

正確的加入正確的外部加入

結果


Answer #4

句法糖對於偶然的讀者來說更明顯的是,連接不是內在的。


Answer #5

回答你的問題

在Sql Server連接語法中OUTER是可選的

它在msdn文章中提到: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx ://msdn.microsoft.com/en-us/library/ms177634( https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx sql.130).aspx

所以下面的列表顯示了有和沒有OUTER的聯合等效語法

LEFT OUTER JOIN => LEFT JOIN
RIGT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN

其他等效語法

INNER JOIN => JOIN
CROSS JOIN => ,

強烈推薦Dotnet Mob Artice: 加入Sql Server


Answer #6

我發現按以下順序考慮聯接更容易:

  • CROSS JOIN - 兩張表的笛卡爾積。 所有連接都從這裡開始
  • INNER JOIN - 添加了過濾器的CROSS JOIN。
  • OUTER JOIN - 一個INNER JOIN,包含缺少的元素(來自LEFT或RIGHT表格)。

在我想出這個(相對)簡單的模型之前,JOINS總是多一些黑色藝術。 現在他們變得非常有意義。

希望這有助於超過它的困惑。


Answer #7

我知道這是舊的,但想要把我的兩分錢。我明白, LEFT JOIN應該是一樣的LEFT OUTER JOIN但在我的經驗,我看到一個LEFT JOIN拉回不同的結果比一個LEFT OUTER JOIN所以我已經開始使用關鍵詞OUTER來更加具體和恰當。 應該以LEFT JOIN返回的行不在我使用LEFT OUTER JOIN時所在的位置。 我試圖向同事解釋這一點,因為他無法獲得他需要的行,所以我決定谷歌的差異,以便有某種支持向他展示。 這可能是我不確定的SQL Server特定的事情。 我想說,在良好的實踐中,明確指出你希望發生外連接會更明智。 只是我的觀點。


Answer #8

為什麼左/右和左外/右外都一樣? 讓我們來解釋為什麼這個詞彙。 理解LEFT和RIGHT聯接是OUTER聯接的特定情況,因此不能只是OUTER LEFT / OUTER RIGHT。 OUTER連接也稱為FULL OUTER,而LEFT和RIGHT連接則是OUTER連接的部分結果。 確實:

Table A | Table B     Table A | Table B      Table A | Table B      Table A | Table B
   1    |   5            1    |   1             1    |   1             1    |   1
   2    |   1            2    |   2             2    |   2             2    |   2
   3    |   6            3    |  null           3    |  null           -    |   -
   4    |   2            4    |  null           4    |  null           -    |   -
                        null  |   5             -    |   -            null  |   5
                        null  |   6             -    |   -            null  |   6

                      OUTER JOIN (FULL)     LEFT OUTER (partial)   RIGHT OUTER (partial)

現在清楚為什麼這些操作有別名,以及顯然只有3種情況存在:INNER,OUTER,CROSS。 有兩個子外殼的情況。 詞彙,老師​​解釋這個的方式,以及上面的一些答案,常常使得看起來有很多不同類型的連接。 但它其實很簡單。






outer-join