天天看點

sql - left join、right join和inner join的差別

  1. left join(左連接配接)傳回左表中的所有記錄和右表中連接配接字段相等的記錄
  2. right join(右連接配接)傳回右表中的所有記錄和左表中連接配接字段相等的記錄
  3. 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并不以哪張表的記錄為基礎的;它隻查詢符合條件的記錄

如有侵權請告知删除!謝謝~