2010-03-03 4 views
4

Je souhaite mettre à jour une colonne en ajoutant une nouvelle valeur à côté des anciennes. Donc, si la colonne "fruits" a une valeur de "pommes" et que j'exécute ma requête, elle devrait alors avoir la valeur "pommes, oranges".Comment mettre à jour un enregistrement de base de données et conserver les anciennes valeurs dans MySQL?

En ce moment, quand je fais une déclaration de mise à jour »

UPDATE tableName SET fruits='oranges' WHERE id=1; 

Il remplace simplement des pommes avec des oranges. Comment puis-je obtenir pour ajouter la nouvelle valeur aux côtés de l'ancien séparés par des virgules?

+4

C'est vraiment pas un goo d schéma. Vous aurez probablement des problèmes à interroger ces valeurs sur la route. Vous devriez expliquer comment vous avez l'intention d'utiliser les données. Selon ce que vous voulez, une table de jonction peut être une meilleure solution. –

+0

Il suffit d'apprendre SQL et je construis un blog basique pour que l'évolutivité ne soit pas un problème. – Lusaunt

Répondre

5
UPDATE tableName SET fruits=CONCAT(fruits, ', oranges') WHERE id=1; 

ou:

UPDATE tableName SET fruits=CONCAT_WS(', ', fruits, 'oranges') WHERE id=1; 
+0

Cela ne fera pas ce qu'il veut si 'fruits' est vide. – SLaks

+0

True, mais il semble qu'il existe des valeurs existantes de la publication. – ceejayoz

0
$reason_old = mysql_query("SELECT $col_name FROM `table` WHERE `unique_field` =$id"); 
$reason_fetch = mysql_fetch_array($reason_old); 
$reason_box = $reason_all[$reason_fetch ]; 

$anyvariable= "UPDATE `$table_name` SET `$col_name ` = '$new_data , $reason_box' WHERE `unique_field` =$id"; 
$yes_good = mysql_query($anyvariable, $conn); 
+0

Vous devriez ajouter une sorte d'explication. À première vue, il semble que cette réponse ne répond pas du tout à la question. –

+0

Merci pour l'édition .. C'est juste la conception de texte ne change pas le code. –