2010-06-11 14 views
109

Comment puis-je modifier les données dans une seule cellule d'une table mysql. J'ai un problème avec UPDATE parce qu'il fait changer tous les paramètres dans une colonne mais je veux seulement un changement. Comment?Modifier les données d'une cellule dans mysql

Répondre

25

UPDATE ne changera que les colonnes que vous listez spécifiquement. La clause WHERE limite les lignes qui sont mises à jour. Généralement, vous l'utiliserez pour identifier la valeur de clé primaire (ou ID) de votre table, de sorte que vous mettez à jour une seule ligne.

La clause SET indique à MySQL les colonnes à mettre à jour. Vous pouvez lister autant de colonnes que vous le souhaitez. Tout ce que vous n'indiquez pas ne sera pas mis à jour.

143

Vous avez probablement besoin de spécifier les lignes que vous souhaitez mettre à jour ...

UPDATE mytable 
    SET column1 = value1, 
     column2 = value2 
    WHERE key_value = some_value; 
+0

J'étais confus par cette réponse, pensant lignes sélectionnées SET pour changer, et où les changé . – Keith

+0

peut la condition dans WHERE être column1 = old_value? – weefwefwqg3

+0

@ weefwefwqg3, oui, il peut, mais il n'y a pas de point. Si vous ne changez pas la valeur, laissez-la en dehors de la partie SET. –

5

mise à jour modifie uniquement les valeurs que vous spécifiez

UPDATE table SET cell='new_value' WHERE whatever='somevalue' 
92

Ma réponse répète ce que d'autres ont dit, mais Je pensais ajouter un exemple, en utilisant MySQL, seulement parce que les réponses précédentes étaient un peu cryptiques pour moi.

La forme générale de la commande que vous devez utiliser pour mettre à jour la colonne d'une seule ligne:

UPDATE my_table SET my_column='new value' WHERE something='some value'; 

Et voici un exemple.

AVANT

mysql> select aet,port from ae; 
+------------+-------+ 
| aet  | port | 
+------------+-------+ 
| DCM4CHEE01 | 11112 | 
| CDRECORD | 10104 | 
+------------+-------+ 
2 rows in set (0.00 sec) 

faire le changement

mysql> update ae set port='10105' where aet='CDRECORD'; 
Query OK, 1 row affected (0.00 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

APRÈS

mysql> select aet,port from ae; 
+------------+-------+ 
| aet  | port | 
+------------+-------+ 
| DCM4CHEE01 | 11112 | 
| CDRECORD | 10105 | 
+------------+-------+ 
2 rows in set (0.00 sec) 
+0

Merci pour cette démonstration. La requête ci-dessus mettra à jour toutes les instances de CDRECORD dans votre colonne aet. Toutefois, lors de la mise à jour d'une cellule spécifique dans une colonne spécifique, il est préférable de le faire en fonction de l'ID de la colonne, c'est-à-dire ID = xx – Mohammed

0

Certaines des colonnes MySQL ont une clause « sur la mise à jour », voir

mysql> SHOW COLUMNS FROM your_table_name; 

Je ne sais pas comment mettre à jour cela, mais affichera une édition quand je trouve.

+0

S'il y a une mise à jour, la colonne "Extra" de la table que vous obtenez lors de l'exécution de la commande ci-dessus. –

1

essayez ceci.

UPDATE `database_name`.`table_name` SET `column_name`='value' WHERE `id`='1'; 
+0

Bienvenue dans Stack Overflow! Bien que cet extrait de code soit le bienvenu, et qu'il puisse fournir de l'aide, il serait [grandement amélioré s'il comprenait une explication] (// meta.stackexchange.com/q/114762) de * comment * il aborde la question. Sans cela, votre réponse a beaucoup moins de valeur éducative - rappelez-vous que vous répondez à la question pour les lecteurs dans le futur, pas seulement pour la personne qui demande maintenant! S'il vous plaît [modifier] votre réponse pour ajouter une explication, et donner une indication des limites et des hypothèses qui s'appliquent. –

1

MISE À JOUR TABLE<tablename>SET<COLUMN=VALUE><CONDITION>

Exemple:

UPDATE TABLE teacher SET teacher_name='NSP' WHERE teacher_id='1'