2016-04-15 3 views
2

У меня есть таблица ТестыMySql - Update/Case

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