首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

SQL JOIN ON 聯合查詢實戰:INNER JOIN、多表關聯、WHERE 子查詢對比、別名規範

     編輯:MySQL 綜合教學

前言

JOIN ... ON 是 ANSI SQL 92 標準連接語法,比舊式 WHERE a.id = b.id 更清晰、可維護。本文講解 **INNER JOIN、多表鏈式 JOIN、ON vs WHERE 語義差異、別名規範**,並給出兩個實戰案例。

一、標準語法

SELECT a.col1, b.col2
FROM table_a a
INNER JOIN table_b b ON a.join_col = b.join_col;

二、實戰案例

案例 1:用戶-訂單(經典一對多)

SELECT p.lastname, p.firstname, o.orderno
FROM persons p
INNER JOIN orders o ON p.id_p = o.id_p;

案例 2:專輯-曲目(三表鏈式)

SELECT a.title, t.artist
FROM album a
JOIN track t ON a.asin = t.album
WHERE t.song = 'alison';

三、JOIN ON vs WHERE 子查詢對比

寫法示例優點缺點
JOIN ON (推薦)FROM a JOIN b ON a.id=b.id語義清晰、連接條件與篩選條件分離、優化器友好初學者需適應
WHERE 子查詢FROM a,b WHERE a.id=b.id舊碼兼容連接與篩選混雜、易漏條件導致笛卡爾積、外連接難寫

四、多表 JOIN 順序與優化

  • **小表驅動大表**:結果集小的表放前面(左側)
  • **ON 條件列建索引**
  • **只 SELECT 需要的列**
  • **WHERE 篩選條件盡早下推**

五、別名規範(強制要求)

  • **每張表必須起別名**
  • **別名簡短有意義**:users u, orders o, order_items oi
  • **所有列引用加前綴**:u.id, o.user_id

六、外連接速查

類型關鍵字結果
內連接INNER JOIN / JOIN僅匹配行
左連接LEFT JOIN / LEFT OUTER JOIN左表全保留,右表無匹配填 NULL
右連接RIGHT JOIN右表全保留(可改 LEFT 交換順序)

總結

JOIN ... ON 是現代 SQL 連接標準。**強制別名、條件上移、小表驅動**三原則,能寫出清晰高效的多表查詢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved