2010-06-11 22 views
109

¿Cómo puedo cambiar los datos en una sola celda de una tabla mysql? Tengo un problema con la ACTUALIZACIÓN porque hace que cambien todos los parámetros en una columna, pero solo quiero que se modifique uno. ¿Cómo?Cambiar los datos de una celda en mysql

Respuesta

25

UPDATE cambiará solo las columnas que enumere específicamente.

UPDATE some_table 
SET field1='Value 1' 
WHERE primary_key = 7; 

La cláusula WHERE limita qué filas se actualizan. En general, debe usar esto para identificar el valor de la clave principal (o ID) de su tabla, de modo que esté actualizando solo una fila.

La cláusula SET le dice a MySQL qué columnas actualizar. Puede enumerar tantas o tan pocas columnas como desee. Cualquiera que no aparezca en la lista no se actualizará.

143

Es probable que tenga que especificar las filas que desea actualizar ...

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

Estaba confundido por esta respuesta, pensando filas del conjunto seleccionado para cambiar y donde ellos cambiaron . – Keith

+0

¿puede la condición en WHERE ser column1 = old_value? – weefwefwqg3

+0

@ weefwefwqg3, sí, puede, pero no tiene sentido. Si no está cambiando el valor, simplemente déjelo fuera de la parte de SET. –

5

actualización sólo cambia los valores que especifique

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

Mi respuesta es repetir lo que otros han dicho antes, pero Pensé en agregar un ejemplo, usando MySQL, solo porque las respuestas anteriores eran un poco crípticas para mí.

La forma general del comando tiene que utilizar para actualizar la columna de una sola fila:

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

Y aquí es un ejemplo.

ANTES

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

hacer el cambio

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

DESPUÉS

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

Gracias por esta demostración. La consulta anterior actualizará todas las instancias de CDRECORD en su columna aet. Sin embargo, al actualizar una celda específica en una columna específica, es mejor hacerlo en base al ID de la columna, es decir, donde ID = xx – Mohammed

0

Algunas de las columnas de MySQL tiene una cláusula "en la actualización", véase:

mysql> SHOW COLUMNS FROM your_table_name; 

No estoy seguro de cómo actualizar esto, pero va a publicar una edición cuando me entero.

+0

Si hay una "actualización", estará en la columna "Extra" de la tabla que obtienes al ejecutar el comando anterior. –

1

prueba esto.

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

¡Bienvenido a Stack Overflow! Aunque este fragmento de código es bienvenido, y puede brindar cierta ayuda, sería [mejorado mucho si incluyera una explicación] (// meta.stackexchange.com/q/114762) de * cómo * aborda la pregunta. Sin eso, tu respuesta tiene mucho menos valor educativo: recuerda que estás respondiendo la pregunta a los lectores en el futuro, ¡no solo a la persona que pregunta ahora! Por favor [edite] su respuesta para agregar una explicación y dar una indicación de qué limitaciones y suposiciones se aplican. –

1

tabla de actualización<tablename>SET<COLUMN=VALUE>DONDE<CONDITION>

Ejemplo:

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