2

重複の可能性:
単一の UPDATE SQL ステートメントで複数の更新を実行することは可能ですか?

以下のように、特定の列のいくつかの新しい値でテーブルを更新しているため、prepayId で示される特定のフローで、テーブル Prepay、列 PrepayTransactionDesc を更新しています。

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

どうすればそれらを一度に行うことができますか? それほど難しいことではありませんが、タスクを実行しようとすると何かが足りないようです。

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 句で、更新するテーブルと結合します。これにより、1 つのステートメントで複数の行を更新できます。

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 に答える