0

私は次の文字列を持っていますが、それが気に入らないようです:

"UPDATE 
   table 
      SET a = '', b = '34' 
   WHERE id = '1000001'; 
      SET a = '1111', b = '11' 
   WHERE id = '100210'; 
      SET a = '', b = '2' 
   WHERE id = '8002059';"

私のaspクラシックコードでは、その文字列は1行にあります。これは複数のupdate / whereステートメントを実行する正しい方法ですか?

4

2 に答える 2

0

これがもっと好きになるでしょう(3つのステートメント)。

UPDATE table SET a = '', b = '34' WHERE id = '1000001'; 

UPDATE table SET a = '1111', b = '11' WHERE id = '100210'; 

UPDATE table SET a = '', b = '2' WHERE id = '8002059';

または、SETで2つのCASEステートメントを使用することもできます。読みやすくはありませんが、正確に3つの条件付き更新を頻繁に実行する必要がある1回限りの状況である場合、3回ではなく1回のデータベースラウンドトリップで少し速く実行されます(ありそうもない)。

UPDATE table SET 

a = CASE id WHEN '1000001' THEN '' WHEN '100210' THEN '1111' WHEN '8002059' THEN '' ELSE a END, 

b = CASE id WHEN '1000001' THEN '34' WHEN '100210' THEN '11' WHEN '8002059' THEN '2' ELSE b END

WHERE id IN ('1000001', '100210', '8002059');
于 2013-02-27T12:40:39.433 に答える
0

いいえ、エラーになります。

Msg 156, Level 15, State 1, Line 2
Incorrect syntax near the keyword 'table'.

また、 UPDATEステートメントで複数の where を使用することはできません。

代わりにこれを試してください:

UPDATE 
   [table]
   set a =
   ( case when id IN ( '1000001', '8002059') then  '' 
          when id = '100210' then '1111'
     end    
   ),
   b =  
   ( case when id = '1000001' then '34' 
          when id = '100210' then '11'
          when id = '8002059' then '2'
     end    
   )
   where id in ('1000001', '100210', '8002059');
于 2013-02-27T12:45:56.917 に答える