SQL 容易忽略的連接語句

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後,重複的行將不會被移除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章