2

可能重复:
是否可以使用单个 UPDATE SQL 语句执行多个更新?

我正在使用特定列的一些新值更新表,如下所示,因此我正在更新表 Prepay,列 PrepayTransactionDesc,在 prepayId 指示的某些流上

update Prepay
set PrepayTransactionDesc = 'Funded Repeat Voucher 153429'
where prepayId = 58045

它工作正常,但我想做多次更新。我尝试了几种不同的方法,但都失败了。我当时试图这样做是在使用 CASE 的时候。

例如,我有以下 prepayid 和 prepaytransactiondesc 字段

57770   Funded Repeat Voucher 153118
57771   Funded Repeat Voucher 153119
57772   Funded Repeat Voucher 153120
57773   Funded Repeat Voucher 153121
57774   Funded Repeat Voucher 153122
57775   Funded Repeat Voucher 153123
57776   Funded Repeat Voucher 153124
57894   Funded Repeat Voucher 153276
57895   Funded Repeat Voucher 153277
57896   Funded Repeat Voucher 153278

我将如何在 1 内完成它们?这不可能那么困难,但是当我尝试完成这项任务时,我似乎遗漏了一些东西。

4

4 回答 4

1

你可以试试

UPDATE Prepay
SET PrepayTransactionDesc = 
   CASE
     WHEN prepayID = 57770 THEN 'Funded Repeat Voucher 153118'
     WHEN prepayID = 57771 THEN 'Funded Repeat Voucher 153119'
     WHEN prepayID = nextID THEN 'Next Value' 
   END
WHERE  prepayID in (1,2,4,57770... all your ids here)
于 2012-10-11T12:46:58.620 回答
0

将要更新的数据放入临时变量表​​中。然后在更新语句的 FROM 子句中将它与要更新的表连接起来。这将允许您在一个语句中更新多行。

DECLARE @data TABLE (id INT, desc VARCHAR(200))
INSERT @data VALUES (57770, 'Funded Repeat Voucher 153118')
INSERT @data VALUES (57771, 'Funded Repeat Voucher 153119')

UPDATE Prepay
SET PrepayTransactionDesc = @data.desc
FROM Prepay
    INNER JOIN @data ON Prepay.prepayID = @data.id
于 2012-10-11T12:54:27.333 回答
0
update Prepay
  set PrepayTransactionDesc = 
    case
      when prepayId = 58045 then 'Funded Repeat Voucher 153429'
      when prepayId = 57770 then 'Funded Repeat Voucher 153118'
    end
where
  prepayId in (58045 , 57770)

显然添加其他值

于 2012-10-11T12:55:05.850 回答
0
Update Prepay SET PrepayTransactionDesc = 'Funded Repeat Voucher 153429' WHERE  prepayID  BETWEEN yourid AND yourid
于 2012-10-11T12:56:06.317 回答