【问题标题】:Update Bulk Data SQL server更新批量数据 SQL 服务器
【发布时间】:2016-07-08 13:13:26
【问题描述】:

我是这个站点的新手,我真的被困在为数据库执行大型更新上。我给出了需要更新的交易列表。这是数据库的一个小示例以及最后的所需输出 enter image description here

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

【问题讨论】:

  • 请添加一些DDL,DML,看看这里如何更快地询问和获得帮助:spaghettidba.com/2015/04/24/…
  • 对不起。这是一个更好的屏幕截图。 @TheGameiswar
  • 请阅读我粘贴的链接,问一个好问题有它的好处,即使它是如此基本

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


【解决方案1】:

您需要为要执行的逻辑添加更多细节。我相信您正在尝试根据客户建立联系。

编辑:添加更新语句并使用 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

【讨论】:

  • 是的,你是对的。每个交易都有属于 customerID 的 purchaseID 来源和购买 ID 目的地。每个 Purchase 都附加有 purchaseTypeID。如何更新 Transaction.PuurchaseIDforwatdedto ? @乔C
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 2018-09-14
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
相关资源
最近更新 更多