首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL 依條件動態選擇查詢來源表:UNION ALL 搭配 EXISTS 實現

     編輯:程式設計綜合問答

需求:根據表 A 中 f1 值(1 或 2)決定執行查詢語句 1(查表 A)或查詢語句 2(查表 B)。

UNION ALL + EXISTS 模式

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 表達式(單表多欄位切換)

若僅欄位值不同而來源表相同,用 CASE 更簡潔。

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