2016-04-15 10 views
2

Ich habe eine Tabelle TestsMySql - Update/Gehäuse

TestNumber (int primary key) 
InactiveBitwise (int) 

ich den folgenden Befehl ein:

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

aber es gibt und Fehler

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 |' 

Beide TestNumber = 2 und 3 existieren, weil ich sie vorher von einem Anruf in die Datenbank bekommen habe.

Weiß jemand, was es nicht mag?

Antwort

2

Sie müssen angeben, welche Spalte Wert, den Sie ändern möchten, und der Fall wird der Rückgabewert bestimmen nur:

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

Danke, das einen Reiz gearbeitet. – Rewind