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

MS SQL Server 子查詢(嵌套查詢)全解析:標量、多值、相關子查詢與實戰模式

     編輯:關於SqlServer

子查詢(Subquery/嵌套查詢)是出現在另一個查詢 WHERE、HAVING、FROM 或 SELECT 列表中的 SELECT 陳述式。依回傳結果分類:

類型回傳常用運算子典型用途
標量子查詢單一值(1列1欄)=, <>, >, <, >=, <=與單值比較、SELECT 列表運算
多值子查詢單欄多列IN, NOT IN, ANY, ALL集合成員資格檢查
相關子查詢視外部查詢每列重新評估EXISTS, NOT EXISTS, IN逐列關聯檢查、複雜篩選

語法架構

SELECT target_expr FROM table1
WHERE expr (SELECT target_expr FROM table2 [WHERE ...])

子查詢範例1 子查詢範例2 子查詢範例3 子查詢範例4

關鍵技巧與最佳實務

  • EXISTS vs IN:EXISTS 遇符合即停止,適合大結果集;IN 需完整評估子查詢,適合小結果集且有索引支援。
  • 相關子查詢效能:外部查詢每列皆執行一次,大表慎用。可改寫為 JOIN、APPLY (SQL 2005+) 或暫存表。
  • 標量子查詢於 SELECT 列表:每列執行一次,極易成為效能瓶頸,改用 OUTER APPLY 或預先 JOIN 聚合。
  • 避免 NOT IN 含 NULL:子查詢結果含 NULL 會導致 NOT IN 永無匹配,改用 NOT EXISTS。

總結

子查詢表達力強、可讀性高,但效能陷阱多。理解三大類型差異、運算子語意與改寫策略,是 SQL 調優的核心能力之一。

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