- left join(左連接配接)傳回左表中的所有記錄和右表中連接配接字段相等的記錄
- right join(右連接配接)傳回右表中的所有記錄和左表中連接配接字段相等的記錄
- inner join(等值連接配接)傳回兩個表中聯結字段相等的記錄
現有兩張表:
mysql > select * from left_table
+---id---+---name---+----code----+
| 1 | 零食 | 10344875 |
| 2 | 糕點 | 20983781 |
| 3 | 餐飲 | 39981029 |
| 4 | 娛樂 | 78654654 |
+--------+----------+------------+
mysql > select * from right_table
+---id---+---name---+----code----+
| 1 | 堅果 | 59364875 |
| 2 | 蛋糕 | 87652372 |
| 4 | 網咖 | 87667233 |
| 5 | 攀岩 | 45326756 |
+--------+----------+------------+
left join
mysql > select * from left_table lt
left join right_table rt on lt.id = rt.id
+---id---+---name---+----code----+---id---+---name---+----code----+
| 1 | 零食 | 10344875 | 1 | 堅果 | 59364875 |
| 2 | 糕點 | 20983781 | 2 | 蛋糕 | 87652372 |
| 4 | 娛樂 | 78654654 | 4 | 網咖 | 87667233 |
| 3 | 餐飲 | 39981029 | null | null | null |
+--------+----------+------------+--------+----------+------------+
查詢結果記錄說明: left join是以左表(left_table)的記錄為基礎的。
左表的記錄将會全部查詢出來,而右表(right_table)隻會顯示符合搜尋條件的記錄,右表記錄不足的地方均為null。
right join
mysql > select * from left_table lt
right join right_table rt on lt.id = rt.id
+---id---+---name---+----code----+---id---+---name---+----code----+
| 1 | 零食 | 10344875 | 1 | 堅果 | 59364875 |
| 2 | 糕點 | 20983781 | 2 | 蛋糕 | 87652372 |
| 4 | 娛樂 | 78654654 | 4 | 網咖 | 87667233 |
| null | null | null | 5 | 攀岩 | 45326756 |
+--------+----------+------------+--------+----------+------------+
查詢結果記錄說明: right join是以右表(right_table)的記錄為基礎的。
右表的記錄将會全部查詢出來,而左表(left_table)隻會顯示符合搜尋條件的記錄,左表記錄不足的地方均為null。
inner join
mysql > select * from left_table lt
inner join right_table rt on lt.id = rt.id
+---id---+---name---+----code----+---id---+---name---+----code----+
| 1 | 零食 | 10344875 | 1 | 堅果 | 59364875 |
| 2 | 糕點 | 20983781 | 2 | 蛋糕 | 87652372 |
| 4 | 娛樂 | 78654654 | 4 | 網咖 | 87667233 |
+--------+----------+------------+--------+----------+------------+
查詢結果記錄說明: inner join并不以哪張表的記錄為基礎的;它隻查詢符合條件的記錄
如有侵權請告知删除!謝謝~