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

跟我學 MS SQL Server - 4:多表查詢與 JOIN、子查詢實戰

     編輯:關於SqlServer

跨多表查詢時,可用隱含 JOIN、顯式 JOIN 或子查詢三大方式,依資料庫優化器與可讀性選擇。

隱含 JOIN(舊式語法)

SELECT t1.col1, t2.col2 FROM table1 t1, table2 t2
WHERE t1.col1 = t2.col1;

以逗號分隔表名,WHERE 指定關聯條件。可擴充多表與 AND,但易產生笛卡兒積且難以維護。

顯式 JOIN(ANSI 標準)

  • INNER JOIN:僅回傳雙方符合條件的列。
  • LEFT/RIGHT/FULL OUTER JOIN:保留單/雙方所有列,無對應處為 NULL。
  • CROSS JOIN:笛卡兒積。
SELECT t1.col1, t2.col2 FROM table1 t1
INNER JOIN table2 t2 ON t1.col1 = t2.col1;

優點:控制結果集更精確,多表查詢效能通常優於隱含 JOIN。

子查詢

將一個查詢結果作為另一個查詢的資源,用於限定結果而非回傳資料。

SELECT col1 FROM table1
WHERE EXISTS (SELECT col1 FROM table2 WHERE table1.col1 = table2.col1);

注意:子查詢會完整獨立執行,複雜情況下效能不如 JOIN,建議優先考慮 JOIN 重寫。

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