1 自連接
經常被我們忽略的就是自連接。很多時候我們需要把同一張表當作兩張獨立的表來使用。特別是表包含了嵌套層次的數據,或者你希望根據不同的時間段來引用相同的表作比較。
可以用表別名來實現表與其自身的聯結。
示例:通過連接Employee表的ManagerID和Employee表的EmployeeID來演示自聯結,
SELECT e.EmployeeID,e.Title,m.Tilte as ManagerTitle FROM Employee e LEFT JOIN Employee m ON e.ManagerID=m.EmployeeID.
2 使用衍生表
即將表與子查詢查出的結果集相連接。
SELECT DISTINCT s.PurchaseOrderNumber
FORM SalesOrderHeader s INNER JOIN
(
SELECT SalesOrderID From SalesOrderDetail where UnitPrice Between 1000 and 2000)
)
d ON s.SalesOrderID=d.SalesOrderID
使用衍生表的查詢有時比臨時表性能好很多,因爲你消除了SQL SERVER在使用前創建和分配臨時表所需要的步驟
3使用Union組合結果集
使用UNION運算符可以追加兩個或多個SELECT 語句的結果到一個結果集中,每一個合併的SELECT語句必須有相同數據的列,列次序相同並且有相同的或可兼容的數據類型。
默認情況下UNION運算符會移除所有重複行,並且以第一個結果集的列名爲基準顯示列名。對於大結果集來說,這可能會是一個相當耗費資源的操作,所以如果你不需要去除重複數據或者數據本身就不重複的話,可以使用UNION ALL。加了ALL後,重複的行將不會被移除。