天天看點

Mysql進階查詢 内連接配接和外連接配接詳解

一、内連接配接(INNER JOIN)

1、等值連接配接

概述:指使用等号"="比較兩個表的連接配接列的值,相當于兩表執行笛卡爾後,取兩表連結列值相等的記錄。

文法:

SELECT 列
FROM 表1 INNER JOIN 表2
ON 表1.列 = 表2.列      

示例:

SELECT A.*, B.*
FROM student_info A inner join student_score B
ON A.student_id = B.student_id      
Mysql進階查詢 内連接配接和外連接配接詳解

2、非等值連接配接

概述:指使用大于号">"或小于号"<"比較兩個表的連接配接列的值,相當于兩表執行笛卡爾後,取一個表大于或小于另一個表的連結列值的記錄。

SELECT 列
FROM 表1 INNER JOIN 表2
ON 表1.列 <> 表2.列      
SELECT A.*, B.*
FROM student_info A inner join student_score B
ON A.student_id > B.student_id      

結果:

Mysql進階查詢 内連接配接和外連接配接詳解

二、外聯結

1、左外連接配接(LEFT OUTER JOIN)

概述:指将左表的所有記錄與右表符合條件的記錄,傳回的結果除内連接配接的結果,還有左表不符合條件的記錄,并在右表相應列中填NULL。

SELECT A.*, B.*
FROM student_info A left join student_score B
ON A.student_id = B.student_id      
Mysql進階查詢 内連接配接和外連接配接詳解

3、全外連接配接(FULL JOIN)——MySQL不支援

概述:指将左表所有記錄與右表所有記錄進行連接配接,傳回的結果除内連接配接的結果,還有左表與右表不符合條件的記錄,并在左表與右表相應列中填NULL。

三、自然連接配接(NATURAL JOIN)

概述:指自動将表中相同名稱的列進行記錄比對。

SELECT A.*, B.*
FROM student_info A natural join student_score B
      
Mysql進階查詢 内連接配接和外連接配接詳解

四、自連接配接

概述:指用表的别名實作表自身的連接配接。

SELECT B.*
FROM student_score A, student_score B
WHERE A.student_id = B.student_id
AND B.student_score > 80      
Mysql進階查詢 内連接配接和外連接配接詳解

最後附上一張圖,此圖在手,天下我有

Mysql進階查詢 内連接配接和外連接配接詳解

繼續閱讀