[英]SQL Left Join Query Result Row
當您在兩個表上執行左聯接時,假設教師和部門ON teacher.id = department.id
。 左聯接會將左表(教師)中的每個記錄與右表(部門)中的每個記錄進行比較,如果teacher.id = department.id
則將記錄teacher.id = department.id
到結果行中。
當teacher.id != department.id
時,每個表中的行會發生什么? 教師和部門表中的行是否仍合並到一個結果行中,除了結果行的每一列值都將具有NULL
?
該頁面很好地解釋了左右外部聯接,我認為您應該看一下: http : //blog.codinghorror.com/a-visual-explanation-of-sql-joins/
假設我們有2個表:
Table1
tc1
0
1
2
和表Table2
tc2
0
2
3
這將是對這兩個表的各種查詢的結果
SELECT tc1, tc2 FROM table1, table2 WHERE tc1=tc2
結果:
tc1 tc2
0 0
2 2
此查詢與此相同:
SELECT tc1, tc2 FROM table1 INNER JOIN table2 ON tc1=tc2
它基本上只返回tc1 = tc2的行。 簡單。 現在,外部聯接的行為有所不同。 它們包括一個表中的所有行。
LEFT
表示它將包括集合中所有行,即使它們與聯接表中的任何內容都不匹配。
RIGHT
表示它將包括聯接表中的所有行,即使它們與您已有的行中的任何內容都不匹配。
FULL
將從兩側返回所有行。
如果在一側找不到匹配項,則將這些值返回為NULL
SELECT tc1, tc2 FROM table1 LEFT JOIN table2 ON tc1=tc2
結果將是:
tc1 tc2
0 0
1 NULL
2 2
現在,有了正確的加入
SELECT tc1, tc2 FROM table1 RIGHT JOIN table2 ON tc1=tc2
將返回
tc1 tc2
0 0
2 2
NULL 3
現在,完全外部聯接
SELECT tc1, tc2 FROM table1 FULL OUTER JOIN table2 ON tc1=tc2
將返回所有行,並匹配null
tc1 tc2
0 0
1 NULL
2 2
NULL 3
請記住,這些是等效的:
INNER JOIN <=> JOIN
LEFT OUTER JOIN <=> LEFT JOIN
RIGHT OUTER JOIN <=> RIGHT JOIN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.