Axel Richter: If Anweisung in UPDATE Mysql

Beitrag lesen

Hallo,

UPDATE test_it SET
anz = (files + 3),
key1 = IF(FIND_IN_SET('b', key1) > 0, key1, CONCAT_WS(',',key1,'b'))
WHERE id =1

Spricht eigentlich was dagegen, einfach in allen Datensätzen das Feld zu updaten?
Das spart das if statement.

UPDATE test_it SET

anz = (files + 3),
key1 = CONCAT_WS(',',key1,'b')
WHERE id =1

Nein, das würde ja bei  
  
id  key1  anz  
1   a,b   1  
  
dann  
  
id  key1   anz  
1   a,b,b  4  
  
ergeben. (btw.: die Spalte files habe ich gedanklich mit der Spalte anz gleichgesetzt, weil ich sonst nicht wüsste, wo sie plötzlich herkommt.)  
  
Wenn ich es richtig verstanden habe, wollte sie folgendes erreichen:  
  
id  key1  anz  
1   a     1  
  
UPDATE test\_it SET  
anz = (anz + 3),  
key1 = IF(FIND\_IN\_SET('b', key1) > 0, key1, CONCAT\_WS(',',key1,'b'))  
WHERE id =1  
  
ergibt  
  
id  key1  anz  
1   a,b   4  
  
UPDATE test\_it SET  
anz = (anz + 3),  
key1 = IF(FIND\_IN\_SET('b', key1) > 0, key1, CONCAT\_WS(',',key1,'b'))  
WHERE id =1  
  
ergibt  
  
id  key1  anz  
1   a,b   7  
  
also: Die Spalte anz wird immer geupdatet, die Spalte key1 aber nur dann, wenn der entsprechende Buchstabe nicht schon in der Liste steht.  
  
viele Grüße  
  
Axel