如何修改下面的TSQL更新語句以插入源表的partid
不在目標表中的項目ID ='500224'的partid字段中。如果不存在,我需要插入。更新並插入TSQL
USE [DBNAME];
GO
UPDATE m
SET [partId] = a.[partId]
select * FROM
[SourceTable] m
INNER JOIN
[DestTable] a
ON m.[bomItem] = a.[ItemId]
AND m.bomEntry = a.bomEntry AND m.bomRev = a.rev WHERE
m.bomRev=a.rev AND m.partId <> a.partid AND m.lineNbr = a.bomEntry ;
Go
在源表
在目標表
出於上文PARTID 100280
圖片在目的地表中不存在實施例ⅰ要添加並保持所有其他人一樣。
適當的列名不能與單個查詢做到這一點。從SQL Server 2008R2開始,有MERGE語句可以執行thrick。 –
另外:答案和評論提供了各種方法來實現你想要的結果。無論您選擇什麼,請去研究_transactions_和_isolation levels_。您需要確保整個操作以原子方式進行,並且您沒有引入_race condition_。您可以從[這裏]開始(http://weblogs.sqlteam.com/dang/archive/2007/10/28/Conditional-INSERTUPDATE-Race-Condition.aspx)。 (請注意,如果沒有適當的鎖定,MERGE不是原子的,請參見[here](http://weblogs.sqlteam.com/dang/archive/2009/01/31/UPSERT-Race-Condition-With-MERGE.aspx) ) – HABO