T-SQL CROSS APPLY、MERGE

來源:互聯網
上載者:User

標籤:

寫在前面

            剛才看項目裡一個預存程序,也是好長時間沒有使用Sql Server2008了,好多寫法和函數感覺到陌生,這就遇到了CROSS APPLY 和MERGE的文法,兩者之前完全沒接觸過。 所以專門查了下SQL Server2008實戰。

 

1、CROSS APPLY

         從教程和資料查詢結果來看CROSS APPLY完全是屬於文法糖,下面是我基於AdventrueWorkR2查詢的,使用了CROSS APPLY和INNER JOIN兩種方式。

USE [AdventureWorks2008R2]GO/****** Object:  UserDefinedFunction [dbo].[fn_WorkOrderRouting]    Script Date: 08/13/2015 13:16:00 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER FUNCTION [dbo].[fn_WorkOrderRouting]  (@WorkOrderID int) RETURNS TABLEASRETURN  SELECT a.WorkOrderID,a.ProductID,a.OperationSequence,a.LocationID  FROM Production.WorkOrderRouting a  WHERE [email protected]

  

select w.WorkOrderID,w.OrderQty,r.ProductID,r.OperationSequence from Production.WorkOrder wCROSS APPLY dbo.fn_WorkOrderRouting(w.WorkOrderID) as rORDER BY w.WorkOrderID,w.OrderQty,r.ProductID

  

SELECT a.WorkOrderID,a.OrderQty,b.ProductID,b.OperationSequence FROM Production.WorkOrder a INNER JOIN Production.WorkOrderRouting b on a.WorkOrderID= b.WorkOrderIDORDER BY a.WorkOrderID,a.OrderQty,b.ProductID

 

2、MERGE

     merge簡單來說是針對插入、更新、刪除三個操作的合并,根據與源表連接的結果,對目標表進行插入、更新、刪除。 我們經常用的情境也就是主從表同步,或者是主表和曆史表的同步和維護。 下面程式碼片段是我在網上看到的一段:

--建立一個臨時的訂單表CREATE TABLE Orders(OrderID INT,CustomerID NCHAR(5)) GO--往這個表中添加兩行記錄INSERT INTO Orders VALUES(1,N‘AAAAA‘) INSERT INTO Orders VALUES(2,N‘BBBBB‘) GO--通過產生資料表查詢,產生另外一個架構一模一樣的表,但只是複製了第一行資料過去SELECT * INTO Orders2 FROM Orders WHERE OrderID=1 GO--將第二個表的資料進行更新UPDATE orders2 SET CustomerID=N‘DDDDD‘--合并兩個表MERGE Orders o USING Orders2 o2 ON o2.OrderID=o.OrderID WHEN MATCHED THEN UPDATE SET O.CustomerID=o2.CustomerID--如果匹配到了,就更新掉目標表 WHEN NOT MATCHED THEN INSERT VALUES(o2.OrderID,o2.CustomerID)--如果匹配不到,就插入 WHEN NOT MATCHED BY SOURCE THEN DELETE;--如果來源表無法匹配到,就刪除

  

T-SQL CROSS APPLY、MERGE

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.