Cambiar los datos de una celda en mysql

156

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

kasrsf
fuente
¿Qué has intentado hasta ahora? ¿Puedes compartir la consulta que estás utilizando? Por lo general, no actualiza "todos los parámetros en una columna"
Nico Haase

Respuestas:

191

Probablemente necesite especificar qué filas desea actualizar ...

UPDATE 
    mytable
SET 
    column1 = value1,
    column2 = value2
WHERE 
    key_value = some_value;
Brian Hooper
fuente
1
Esta respuesta me confundió, pensando que SET seleccionó las filas para cambiar, y DONDE las cambió.
Keith
¿Puede la condición en WHERE be column1 = old_value?
weefwefwqg3
@ weefwefwqg3, sí, puede, pero no tiene sentido. Si no está cambiando el valor, simplemente déjelo fuera de la parte SET.
Brian Hooper el
1
@Brian Hooper: Necesito cambiar el valor, quiero preguntar si puedo hacer esto: UPDATE mytable SET column1 = new_value WHERE column1 = old_value;??
weefwefwqg3
2
@ weefwefwqg3, Ah, ya veo, lo siento, un ataque de miopía. Sí, eso estaría perfectamente bien.
Brian Hooper el
113

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

La forma general del comando que necesita usar para actualizar la columna de una sola fila:

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

Y aquí hay un ejemplo.

ANTES DE

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

HACIENDO 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)
slm
fuente
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 función de la ID de la columna, es decir, donde ID = xx
Mohammed
Por lo general, es mejor usar la clave principal de las filas, el identificador único de las filas (que a menudo es la ID, pero no siempre). Honestamente, depende de lo que quieras hacer que define la "mejor" práctica
Garret Gang
30

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

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

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

La SETcláusula le dice a MySQL qué columnas actualizar. Puede enumerar tantas o tan pocas columnas como desee. Todo lo que no enumeres no se actualizará.

VoteyDisciple
fuente
11

UPDATE solo cambia los valores que especifique:

UPDATE table SET cell='new_value' WHERE whatever='somevalue'
gruñó
fuente
9

Intenta lo siguiente:

UPDATE TableName SET ValueName=@parameterName WHERE
IdName=@ParameterIdName
usuario3668628
fuente
Agregue alguna explicación a su respuesta para que otros puedan aprender de ella. ¿Qué hace eso @parameterName ?
Nico Haase
7

TABLA <tablename> DE ACTUALIZACIÓN ESTABLECIDA <COLUMN=VALUE> DONDE <CONDITION>

Ejemplo:

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

prueba esto.

UPDATE `database_name`.`table_name` SET `column_name`='value' WHERE `id`='1';
abhay
fuente
1
¡Bienvenido a Stack Overflow! Si bien este fragmento de código es bienvenido y puede proporcionar algo de ayuda, sería mucho mejor si incluyera una explicación de cómo aborda la pregunta. Sin eso, su respuesta tiene mucho menos valor educativo: recuerde que está respondiendo la pregunta para los lectores en el futuro, ¡no solo la persona que pregunta ahora! Por favor, editar su respuesta para agregar explicación y dar una indicación de lo que se aplican limitaciones y supuestos.
Toby Speight
0

Algunas de las columnas en MySQL tienen una cláusula "en actualización", vea:

mysql> SHOW COLUMNS FROM your_table_name;

No estoy seguro de cómo actualizar esto, pero publicaré una edición cuando me entere.

Jake_Howard
fuente
Si hay un "al actualizar", estará en la columna "Extra" de la tabla que obtiene al ejecutar el comando anterior.
Jake_Howard