簡體   English   中英

SQL左聯接查詢結果行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM