2017-02-19 1 views
0

Job_ID Spalte in Employees Tabelle hat eindeutige Daten für jede Zeile und ich muss diese Daten entweder als 'MANAGER' oder 'TELLER' mit Wert einer anderen Spalte FIRST_NAME wie folgt aktualisieren, aber scheint das Update ist nicht passiert Meine Erwartung für FIRST_NAME ist = Vijes OR UNNATH die JOB_ID sollte „Manager“ und für andere sein sollten „Teller“MySQL - Update mehrerer Werte mit Case Dann Ende

Erste Antwort als 0 Zeile (n) betroffen Reihen abgestimmt sein. 6 geändert : 0 Warnungen: 0

UPDATE EMPLOYEES 
SET JOB_ID = CASE 
WHEN FIRST_NAME IN ('VIJES','UNNATH') THEN JOB_ID = 'MANAGER' 

WHEN FIRST_NAME NOT IN ('VIJES','UNNATH') THEN JOB._ID = 'TELLER' 
END 
WHERE FIRST_NAME IN ('VIJES','UNNATH','VINOD','RAKESH','ANANT','MUKESH') 

Ich verstehe, dass ich für jede Zeile eine individuelle Aktualisierungsabfrage mit den Kriterien FIRST_NAME absetzen kann, aber nach einer einzigen Aktualisierungsabfrage für die gesamte Tabelle suche.

Bitte klären

Antwort

0

Die Syntax Sie ist verwenden sollten die JOB_ID Spalte zu einem CASE Ausdruck zuweisen, und nichts mehr. Derzeit weisen Sie einen Ausdruck CASE zu, der dann erneut versucht, der Spalte, die aktualisiert wird, einen Wert zuzuweisen.

Diese Abfrage mit:

UPDATE EMPLOYEES 
SET JOB_ID = CASE WHEN FIRST_NAME IN ('VIJES','UNNATH') 
        THEN 'MANAGER' 
        ELSE 'TELLER' END 
WHERE FIRST_NAME IN ('VIJES', 'UNNATH', 'VINOD', 'RAKESH', 'ANANT', 'MUKESH')