iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
0
AI & Data

作者超囉嗦,但一天只要十分鐘的MYSQL真.新手教學系列 第 20

第二十日-把不同表格的資料合在一起:LEFT/RIGHT JOIN

  • 分享至 

  • xImage
  •  

介紹完最常用的INNER JOIN,
現在要介紹LEFT/RIGHT JOIN,
概念上是:
我們選了一張表,
以這張表為主,
加入第二張表,
第二張表會用資料一行行判斷,能不能跟第一張表連接,
能就連起來,不能的話那行資料就不放進去。

用LEFT JOIN看,會長這樣:

B對到B後,會把其他資料也併過去。
下面用我們的資料表來看吧!

  • LEFT JOIN:靠左對齊

LEFT JOIN就是左邊的表(第一張表)不管怎樣都一定會出現,
右邊的表則是有符合才會出現。

以我們的資料表而言,
student LEFT JOIN class,
student裡面的16筆資料一定會出現,
即使student表中的Amy選的課程是6,
對不上任何class表的課程(我們的課程表只提供1到5的課程!),
結果一樣會出現Amy的資料,但在課程資料部分會是空白的。

class表則要看student有沒有用到它,
假設有一門課都沒有任何學生上,LEFT JOIN就不會出現那堂課的資訊。

SELECT * FROM student s LEFT JOIN class c ON c.class=s.id;

  • RIGHT JOIN:靠右對齊

RIGHT JOIN和LEFT JOIN相反
它是以右邊的表(第二張表)為主,
也就是第二張表的資料會無條件全部選出。

以我們的資料來看,
class表的資料都會出現,
但是第一張表student表中的Amy因為選的課程是6,
並沒有在第二張表中,因此並不會被選出。

SELECT * FROM student s RIGHT JOIN class c ON c.class=s.id;


LEFT JOIN就是靠左對齊,
RIGHT JOIN是靠右對齊,
而昨天學的INNER JOIN是兩邊都要有!


上一篇
第十九日-把不同表格的資料合在一起:聯集INNER JOIN
下一篇
第二十一日-把不同表格的資料合在一起:UNION、FULL JOIN
系列文
作者超囉嗦,但一天只要十分鐘的MYSQL真.新手教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言