Hallo,
UPDATE test_it SET
anz = (files + 3),
key1 = IF(FIND_IN_SET('b', key1) > 0, key1, CONCAT_WS(',',key1,'b'))
WHERE id =1Spricht 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
 nicht angemeldet
 nicht angemeldet Struppi
 Struppi