iT邦幫忙

1

MySQL 學習筆記 (JOIN/UNION篇)

sql

前言

英文還行的,推薦直接看教學影片,講得很清楚好懂!
Youtube 講解(全英)

INNER JOIN

  • INNER JOIN 最常用,取得兩表的交集
  • ON 接 兩表關聯性的欄位 (ID)
  SELECT cy.cityName, ct.customerName
  FROM Customer as ct
  INNER JOIN City cy
  ON cy.cityId = ct.cityId

LEFT/RIGHT JOIN

  • LEFT JOIN 會列出 LEFT TABLE 的 所有資料,不論是否與 RIGHT TABLE 有對應資料,無對應處 則顯示 NULL
  -- 由 JOIN 為分界,將 SQL 寫成一行左邊為 LEFT TABLE
  SELECT * FROM `LEFT` LEFT JOIN `RIGHT`

  -- 列出所有 CustomerId  不論其是否有對應的 cityId
  SELECT *
  FROM `Customer` 
  LEFT JOIN `City`
  ON City.cityId = Customer.cityId

  -- 此 SQL 效果同上,只是 TABLE 位置不同而已
  -- 使用 RIGHT JOIN & 資料表位置對調
  SELECT *
  FROM `City`
  Right JOIN `Customer`
  ON City.cityId = Customer.cityId

FULL JOIN

  • 等同 LEFT JOIN + RIGHT JOIN
  • 將兩表合併 無對應之處 皆已 NULL 填上
  SELECT *
  FROM `Customer`
  FULL JOIN `City`
  ON City.cityId = Customer.cityId

UNION

  • 用於同一資料表,不同範圍資料合併
  • UNION ALL 不論是否重複
  • UNION 會排除相同的資料
  • Youtube講解
  SELECT * FROM `people`
  WHERE id BETWEEN 1 AND 5
  UNION ALL
  SELECT * FROM `people`
  WHERE id BETWEEN 3 AND 5
  -- UNION ALL 取得 1~5 + 3~5 共8筆
  -- UNION 取得 1~5 共5筆 重複的忽略

尚未有邦友留言

立即登入留言