2013-02-27 27 views
0

我有以下的字符串,但它似乎不喜歡它:ASP經典 - 微軟SQL和多個地方上的UPDATE子句

"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語句?

回答

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語句。如果這是一次性的情況,那麼您經常需要精確執行3次條件更新(不太可能),它將不會像可讀性那樣快速運行,而是具有1次數據庫往返運行而不是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'); 
+0

讓你在我的字符串的意思,也投入了太多的更新表的一部分? – Jimmyt1988 2013-02-27 12:44:38

+0

你應該將'table'換成'[table]' – 2013-02-27 12:47:29

+0

aghh在asp經典for循環中產生這個字符串很糟糕。謝謝你的幫助。 – Jimmyt1988 2013-02-27 12:53:04

0

不,它會給你一個錯誤。

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

而且你不能在UPDATE聲明中使用多個地方。

試試這個:

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'); 
+0

天哪,謝謝你... – Jimmyt1988 2013-02-27 12:47:54