更新批量数据SQL服务器

时间:2016-07-08 13:13:27

标签: sql sql-server sql-server-2008 sql-server-2012 sql-server-2014

我是这个网站的新手,我真的很难为数据库执行大量更新。我给出了需要更新的交易列表。这里是数据库的一个小例子以及最后的期望输出 enter image description here

问问是。我有一个purchaseID指向PurchaseTypeID = 2的交易列表,并希望所有交易都指向一个PruchaseTypeID为5的purchaseID。

1 个答案:

答案 0 :(得分:0)

您需要为要查找的逻辑添加更多详细信息。我相信你正试图以顾客为基础。

编辑:添加了更新语句并使用了cte而不是临时表。

Create Table #Purchases (ID Int, CustomerID Int, PurchaseTypeID Int)
Insert #Purchases Values (1987, 1, 209)
Insert #Purchases Values (32875, 1, 2)
Insert #Purchases Values (628900, 3, 220)
Insert #Purchases Values (449000, 3, 30)
Insert #Purchases Values (4560, 3, 209)
Insert #Purchases Values (8008, 3, 2)
Insert #Purchases Values (9856, 3, 5)
Insert #Purchases Values (6000, 1, 5)

Create Table #Transactions (TransactionID Int, PurchaseID Int, PurchaseIDForwardTo Int)
Insert #Transactions Values (1, 1987, 32875)
Insert #Transactions Values (2, 628900, 8008)
Insert #Transactions Values (3, 449000, 8008)
Insert #Transactions Values (4, 4560, 8008)

Select * From #Purchases
Select * From #Transactions

;With ctePurchasesTransactions As
(
Select *
    From #Purchases P
    Join #Transactions T On T.PurchaseID = P.ID
)
Update T Set T.PurchaseIDForwardTo = P.ID
    From #Transactions T 
    Join ctePurchasesTransactions PT On PT.TransactionID = T.TransactionID
    Join #Purchases P On P.CustomerID = PT.CustomerID And P.PurchaseTypeID = 5

Select * From #Transactions