2016-04-15 14 views
2

我有一個表測試MySQL的 - 更新/外殼

TestNumber (int primary key) 
InactiveBitwise (int) 

我讓下面的命令:

UPDATE tests SET CASE 
     WHEN TestNumber = 2 THEN InactiveBitwise = (InactiveBitwise | 4) 
     WHEN TestNumber = 3 THEN InactiveBitwise = (InactiveBitwise | 8) 
END WHERE TestNumber IN (2, 3) 

但它給錯

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE WHEN TestNumber = 2 THEN InactiveBitwise = (InactiveBitwise |' 

兩個TestNumber = 2, 3存在,因爲我之前從調用數據庫中獲得它們。

有誰知道它不喜歡什麼?

回答

2

你需要指定你想改變列的值,案件將只確定返回值:

UPDATE tests SET InactiveBitwise = CASE 
     WHEN TestNumber = 2 THEN (InactiveBitwise | 4) 
     WHEN TestNumber = 3 THEN (InactiveBitwise | 8) 
    END 
WHERE TestNumber IN (2, 3) 
+0

謝謝,這工作了魅力。 – Rewind