Struppi: If Anweisung in UPDATE Mysql

Beitrag lesen

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.)

Das stimmt nicht. Das Set Feld, kann einen Wert immer nur einmal haben.

Vorhin hatte ich keine Möglichkeit das zu testen, mein Vorschlag geht ohne Probleme.

  
CREATE TABLE `tipps` (  
  `test` set('0','1','-1') NOT NULL default ''  
) ;  

-- 
-- Daten für Tabelle `tipps`  
--  
  
INSERT INTO `tipps` VALUES ('0,-1');  
INSERT INTO `tipps` VALUES ('0,-1');  
INSERT INTO `tipps` VALUES ('0,1,-1');  
INSERT INTO `tipps` VALUES ('-1');  
INSERT INTO `tipps` VALUES ('1,-1');  
INSERT INTO `tipps` VALUES ('0,-1');  
INSERT INTO `tipps` VALUES ('1,-1');  
INSERT INTO `tipps` VALUES ('-1');

und dann

UPDATE tipps SET test = CONCAT_WS(',', test, '-1')  WHERE 1

Macht genau das richtige.

also: Die Spalte anz wird immer geupdatet, die Spalte key1 aber nur dann, wenn der entsprechende Buchstabe nicht schon in der Liste steht.

Das stimmt ja, aber das IF ist überflüssig ob es die Abfrage wirklich langsamer macht habe ich jetzt nicht getestet.

Struppi.
--
Javascript ist toll