2017-03-14 1 views
2

Ich habe ein Problem mit einem Update mit FällenMySql aktualisieren Fall nicht null sein

ich einen Tisch diccionary

+-----------------------------------------------------------------------+ 
| id | table_name | col_name | size | precis | data_type | 
+------+---------------+-----------+----------+------------+------------+ 
| 1 | 'user'  | 'id'  | null | 10  | 'int'  | 
| 2 | 'user'  | 'name' | 255  | null  | 'varchar' | 
| 3 | 'user'  |'lastname' | 255  | null  | 'varchar' | 
| 4 | 'user'  | 'age'  | null |  2  | 'varchar' | 

Ich habe versucht, zu verwenden, um diese Abfrage

UPDATE diccionary SET 
size = CASE WHEN id = 2 THEN 250 END, 
data_type = CASE when id = 4 THEN 'int' END; 

aber ich genannt haben Erhalten Sie diesen Fehler

#1048 - Column 'data_type' cannot be null 

Was ist in meiner Anfrage falsch? Dank

+0

Sie vermissen die sonst Teil für den Fall. Also, wenn ID nicht 4 dann ist data_type Null – Jens

Antwort

1

die data_type Spalte cant'be null, so dass Sie nur den Fall verwalten, wenn sie nicht gleich 4 zB: Zuordnung varchar

UPDATE diccionary 
SET size = CASE WHEN id = 2 THEN 250 END, 
data_type = CASE when id = 4 THEN 'int' ELSE 'varchar' END; 
+0

es funktioniert! Danke – RalleSaid

1

Nun, wenn die Spalte Sie einen Standardwert nicht null benötigen. Versuchen Sie hinzufügen und 'ELSE' in der Bedingung:

UPDATE diccionary SET 
size = CASE WHEN id = 2 THEN 250 END, 
data_type = CASE when id = 4 THEN 'int' ELSE '????' end; 
+0

es funktioniert! Vielen Dank – RalleSaid