需求:根據表 A 中 f1 值(1 或 2)決定執行查詢語句 1(查表 A)或查詢語句 2(查表 B)。
SELECT * FROM TableA
WHERE EXISTS (SELECT 1 FROM TableC WHERE TableC.flag = 1)
UNION ALL
SELECT * FROM TableB
WHERE EXISTS (SELECT 1 FROM TableC WHERE TableC.flag = 2);
EXISTS 子查詢極快(只檢查存在性),若 TableC.flag=1 存在則執行第一段,否則該段回傳空集。UNION ALL 不去重,效能優於 UNION。若僅欄位值不同而來源表相同,用 CASE 更簡潔。