Join
SQL 連接和關係
我對連接感到困惑。我想知道如何根據表之間的關係來選擇join,或者join是否不依賴於關係?
- 如果關係是“一對一”,那麼“內連接”是最好的。
- 如果關係是“一對多”,那麼?
- 如果關係是“多對一”,那麼?
- 如果關係是“多對多”,那麼左連接是最好的。
與其考慮“基於關係多重性的連接類型”,不如開始考慮如果沒有對應關係時想要發生的連接類型。這是一個更有用的起點。
見傑夫阿特伍德的這篇文章。正如您在他的查詢旁邊的範例結果中看到的那樣,
inner joins
減少結果的數量並outer joins
允許更多的結果進行比較。這兩種情況都可能有用。一般來說,由於性能原因
inner joins
應該首選outer joins
,但是如果沒有匹配,則需要哪種類型的連接的驅動力是您想要發生的事情。同樣根據我的經驗,普遍偏愛left outer joins
overright outer joins
。與生活中的任何事情一樣,都有警告和陷阱,但這是一個更好的起點。
另一個有用的視覺化:SQL 連接很簡單