2011-03-14 13 views
5

Me gustaría saber cómo actualizar varios registros a la vez donde se selecciona un tipo de columna determinado.cómo cambiar muchos registros a la vez en phpmyadmin

He encontrado cómo seleccionar registros. He encontrado cómo actualizar registros. Pero no sé cómo hacerlo juntos para que funcione.

Selección:

SELECT * FROM users DONDE 'tipo' = 'nuevo'

Actualización:

tabla de actualización
columna juego = 937

Así que, básicamente quiero cambiar la información en la 'columna' al 937 en la 'tabla' si otra columna 'tipo' es 'nueva'.

Gracias,

Respuesta

5

Usted puede hacer esto simplemente añadiendo una cláusula WHERE a su declaración UPDATE:

UPDATE `users` 
SET `myColumn` = 937 
WHERE `type` = 'new' 

Por supuesto, el cambio MICOLUMNA para que coincida con el nombre de la columna

+0

¡Gracias, eres el mejor! – dirk

0

Usted puede hacer esto con una subconsulta:

update users 
set column = 937 
where id in (select id from users where type='new') 

basta con cambiar las columnas nombre si Tengo que están equivocados.

+0

gracias por su rápida respuesta, sin embargo, no está funcionando. Recibo el siguiente error: No se puede especificar la tabla de destino 'usuarios' para la actualización en la cláusula FROM – dirk

0

Después de investigar durante un tiempo me encontré otra solución para este problema. Al hacer referencia a la misma tabla o nombre de campo en una consulta, el espacio de nombre en MySQL termina con duplicados y errores. Para superar esto, use la sintaxis "AS" para nombrar los elementos duplicados. Además, las consultas de actualización a menudo requieren que se use un campo clave como parámetro para la cláusula where, este suele ser su campo de ID autoincrementado. Este ejemplo proporciona una solución para estos dos problemas.

UPDATE tbl 
    SET field=newValue 
    WHERE tbl.key IN 
     (SELECT idNew FROM 
      (Select tbl.key AS idNew 
      FROM tbl 
      WHERE field=editValue) AS tblNew); 
  • TBL - Nombre de la tabla que se actualiza

  • campo - campo de destino para la actualización

  • nuevoValor - Valor de sustituir los puntos en el campo de destino

  • tbl.key - Nombre del campo para la clave en su tabla

  • idNew - Nuevo nombre para la clave en su tabla, para reemplazar el nombre y evitar errores al duplicar nombres en la consulta. podría ser cualquier cadena alfanumérica. 'Id' o 'id_n' 'id_new' o

  • EditValue - El valor para cambiar

  • tblNew - Nuevo nombre para la consulta, para evitar que los nombres de tabla duplicados en la consulta.Podría ser cualquier cadena alfanumérica 'tbl_n' o 'tbl_new' o 'tbl_test'

Esta consulta obtiene los valores clave para todos los registros que coinciden con los registros que tienen valores que desea editar, luego cambia el nombre de la clave y tbl para que puedan ser procesados ​​por MySQL; por último, la consulta de actualización se ejecuta y cambia los valores en función de las claves proporcionadas en la subconsulta.

¡Espero que esto le ahorre a alguien unas horas!

Cuestiones relacionadas