前言

其實有些新的特性在SQL Server早就已經(jīng)出現(xiàn)過,但是若非系統(tǒng)的去學習數(shù)據(jù)庫你會發(fā)現(xiàn)在實際項目中別人的SQL其實是比較復雜的,其實利用新的SQL Server語法會更加方便和簡潔,從本節(jié)開始我們將講述一些SQL Server中早已出現(xiàn)的新語法,簡短的內(nèi)容,深入的理解,Always to reivew the basics。

初探APPLY運算符

APPLY運算符是一個非常強大的表運算符,但是APPLY不是標準的,相對應的標準叫做LATERAL,但是此標準并未在SQL Server中實現(xiàn)。像所有表運算符一樣,該運算符用于查詢的FROM子句中。APPLY運算符支持的類型是CROSS APPLY和OUTER APPLY。CROSS APPY僅僅實施一個邏輯查詢處理階段,而OUTER APPLY實施了兩個階段,APPLY運算符對兩個輸入表進行操作,第二個可以是一個表表達式,我們將APPLY兩側的表分別叫做左側表和右側表,右側表通常是一個派生表或TVF(內(nèi)嵌表值函數(shù))。CROSS APPLY運算符實施一個邏輯查詢處理階段-它將右側的表表達式應用到左側表的每一行,并生成一個組合結果集的結果表。CROSS APPLYl類似于交叉聯(lián)接中的CROSS JOIN,但是使用CROSS APPLY運算符,右側的表表達式可以對來自左側表的每一行表示一個不同的行集,這是與聯(lián)接的不同之處。當在右側使用一個派生表,并且派生表查詢中引用來自左側表的屬性,就可以實現(xiàn)此目標,或者是在右側使用一個內(nèi)嵌TVF,可以傳遞左側的屬性作為輸入?yún)?shù),同樣可以實現(xiàn)此目的-摘抄自SQL Server 2012基礎教程。下面我們看一個簡單的例子。

移動開發(fā)培訓,Android培訓,安卓培訓,手機開發(fā)培訓,手機維修培訓,手機軟件培訓

USE TSQL2012
GO

SELECT C.custid, A.orderid, A.orderdate
FROM Sales.Customers AS C
    CROSS APPLY
        (SELECT TOP(3) orderid, empid, orderdate, requireddate 
        FROM Sales.Orders AS O
        WHERE O.custid = C.custid
        ORDER BY orderdate DESC, orderid DESC) AS A;

移動開發(fā)培訓,Android培訓,安卓培訓,手機開發(fā)培訓,手機維修培訓,手機軟件培訓

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式