2010-03-17 7 views
6

J'ai une table de valeurs, l'une des colonnes étant de type SET.Comment mettre à jour les membres d'un type SET MySQL?

S'il a actuellement les membres ('a', 'b', 'c', 'd'), comment ajouter 'e' aux valeurs possibles?

Je réalise que l'utilisation d'un type SET est un peu étrange, et je ne comprends pas pourquoi on l'utiliserait à la place d'une clé étrangère sur une autre table avec les valeurs de l'ensemble, mais je n'ai pas question, et ne peut pas changer autant.

Merci pour votre aide!

MISE À JOUR: Je veux mettre à jour le type SET pour toutes lignes, pas seulement un, si cela aide.

Répondre

5

Vous voulez ajouter 'e' aux valeurs admissibles dans ce champ de jeu, ou il est déjà là et vous voulez ajouter «e» à la valeur actuelle du champ ensemble dans cette table?

Si ce n'est pas déjà une valeur autorisée, alors vous devrez faire une ALTER TABLE et de redéfinir le champ:

ALTER TABLE set_test CHANGE myset myset SET('a','b','c','d','e'); 

(oui, MONJEU 'est mis là-dedans deux fois, il est un « currentname newname "sorte de chose".

Sinon, faites juste une mise à jour TABLE et concattez le champ avec 'e' comme indiqué dans la réponse précédente.

7

Pour ajouter un élément à un SET existant, utilisez la fonction CONCAT() pour ajouter le nouvel élément à votre liste séparée par des virgules. Pour travailler avec des valeurs décimales, nous pouvons utiliser l'opérateur OR au niveau du bit |

UPDATE set_test SET myset = CONCAT(myset,",Travel") 
     WHERE rowid = 3; 

ou

UPDATE set_test SET myset = myset | 1 WHERE rowid = 3; 

Vous pouvez également utiliser la fonction CONCAT_WS(), qui gère les séparateurs de liste pour nous:

UPDATE set_test SET myset = CONCAT_WS(',',myset,'Dancing') 
     WHERE rowid = 6; 
+0

Mais c'est pour une ligne, supprimerait la clause WHERE ajouter «Voyage» à la liste des possibilités pour de nouvelles lignes? – Riddari

+1

oui, c'est pour une seule ligne. Essayez-le sans la clause where et voyez ce qui se passe. Je suppose qu'il l'ajoute à toutes les lignes. J'utiliserais la méthode concat() avec une clause where. – northpole

Questions connexes