2011-05-12 97 views
1
update contentpagenav 
set active = case 
       when active = 0 then active = 1 
       when active = 1 then active = 0 
     end 

我收到以下錯誤有條件更新SQL查詢錯誤

消息102,級別15,狀態1,行3 附近有語法錯誤 '='。

+0

* *什麼**數據庫,版本,版本? – 2011-05-12 16:00:17

回答

6

沒有必要重新分配你的活動,那麼「set active =」就是這樣做的。

update contentpagenav 
     set active = case 
       when active = 0 then 1 
       when active = 1 then 0 
        end 
+0

謝謝。有效! – 2011-05-12 16:01:41

0

的easist辦法做到這一點不符合的情況下:

UPDATE contentpagenav SET active = 1-active; 

如果你簡化你的問題(你需要使用CASE出於某種原因):

UPDATE contentpagenav SET active = CASE active 
    WHEN 1 THEN 0 
    ELSE THEN 1 
END; 

如果超過2種可能的活動值:

UPDATE contentpagenav SET active = CASE active 
    WHEN 1 THEN 0 
    WHEN 0 THEN 1 
    WHEN 2 THEN ... 
    ELSE ... 
END; 
+0

-1對於一個不太明確的答案,很難找出你正在解釋的內容。 – dnolan 2011-05-13 16:04:09

+0

不要暴躁,但我並不認爲這4個詞將是一個挑戰。假設他有唯一的值是0和1,這需要1並將其變成0(1-1 = 0)並將0變成1(1-0 = 1)。如果他有其他的值,他可以通過引入WHERE子句來將其限制爲<2或顯式爲0或1.據我所知,CASE語句很慢,因此在避免它們更簡單的情況下,應該這樣做。抱歉沒有阻止其他兩個...我懇求無知如何正確設置塊在這裏。預覽按鈕會很好。 – BobB 2011-05-13 18:30:48

+0

我認爲你想要大寫和多行代碼塊。我認爲這些都很煩人:P特別是多行代碼,這在Linux命令行SQL接口中不容易編輯;)在任何情況下,固定在上面 – BobB 2011-05-13 18:44:23