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 经典代码中,该字符串位于一行中。这是执行多个更新/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 中使用两个 CASE 语句。它不会那么可读,但是如果这是一个 1-off 的情况,您经常需要执行 3 个条件更新(不太可能),那么它会运行得稍微快一点,而不是 3 个数据库往返。

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 回答