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