將兩個 SELECT 結果集合併,自動去除重複列(單一查詢需用 DISTINCT)。
SELECT BUYERID FROM ANTIQUEOWNERS
UNION
SELECT OWNERID FROM ORDERS;
限制:兩查詢欄位數量、順序、資料型別必須相容(例:BUYERID 與 OWNERID 皆為 INTEGER)。
一般 JOIN(INNER JOIN)僅回傳雙方皆有對應的列。OUTER JOIN 可保留單方無對應的列,常搭配常數旗標說明來源。
SELECT OWNERID, 'is in both Orders & Antiques'
FROM ORDERS, ANTIQUES
WHERE OWNERID = BUYERID
UNION
SELECT BUYERID, 'is in Antiques only'
FROM ANTIQUES
WHERE BUYERID NOT IN (SELECT OWNERID FROM ORDERS);
UNION 合併 → 完整清單含來源標記主鍵-外鍵關係中,外鍵端可能為 NULL(如業務員無客戶)。若需列出所有業務員(含無客戶者),必須使用 OUTER JOIN。
LEFT OUTER JOIN:保留左表所有列RIGHT OUTER JOIN:保留右表所有列FULL OUTER JOIN:保留雙方所有列標準 SQL-92 語法:
SELECT s.name, c.name
FROM salesperson s
LEFT OUTER JOIN customer c ON s.id = c.salesperson_id;
UNION 合併結果、自動去重、欄位結構必須一致