足球比賽數據:result 表記錄比賽結果(主隊 ID、客隊 ID),teams 表存儲隊名。需輸出:比賽 ID、主隊名、客隊名、比分、時間。
-- 步驟 1:關聯主隊
SELECT r.id, t.t_name AS h_name, r.match_time, r.result
FROM result r JOIN teams t ON r.h_id = t.t_id;
-- 步驟 2:關聯客隊
SELECT r.id, t.t_name AS g_name
FROM result r JOIN teams t ON r.g_id = t.t_id;
-- 步驟 3:外層再次 JOIN 合併
SELECT t1.id, t1.h_name, t2.g_name, t1.result, t1.match_time
FROM (步驟1) t1 JOIN (步驟2) t2 ON t1.id = t2.id;
SELECT r.id,
t1.t_name AS h_name,
t2.t_name AS g_name,
r.result,
r.match_time
FROM result r
JOIN teams t1 ON r.h_id = t1.t_id -- 主隊別名
JOIN teams t2 ON r.g_id = t2.t_id; -- 客隊別名
核心要點:同一張表多次參與 JOIN 必須使用不同別名,否則列引用歧義。
員工-主管關係表 subject (id, name, pid):
SELECT t1.name AS p_name, t2.name AS son_name
FROM subject t1
JOIN subject t2 ON t1.id = t2.pid;
文末提供建表與測試數據 SQL,建議在本地導入實操體會連接類型(INNER/LEFT/RIGHT)對結果集的影響。