国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

T-SQL CROSS APPLY、MERGE

2024-07-21 02:46:07
字體:
來源:轉載
供稿:網友
T-SQL CROSS APPLY、MERGE寫在前面

剛才看項目里一個存儲過程,也是好長時間沒有使用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 a.WorkOrderID=@WorkOrderID

  

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;--如果來源表無法匹配到,就刪除

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳东县| 留坝县| 岑巩县| 金阳县| 荔浦县| 安平县| 巩义市| 平安县| 崇礼县| 桦川县| 兴隆县| 祥云县| 肥城市| 湄潭县| 洛南县| 公主岭市| 新平| 山阴县| 莱芜市| 化德县| 昔阳县| 舟山市| 兰坪| 苍南县| 汝南县| 双峰县| 夏津县| 广南县| 南安市| 芦山县| 温泉县| 遂川县| 曲阜市| 绥芬河市| 长宁县| 和平县| 固阳县| 家居| 旅游| 三门县| 克拉玛依市|