2011-11-19 22 views
15

Agregué una columna a una tabla existente. Ahora necesito actualizar el contenido del cuadro agregando un hash MD5 a esa nueva columna, basado en el contenido de una columna existente.MySQL: actualice una tabla completa, insertando un hash MD5, para cada fila una específica

Para ser más precisos:

id | name | date-of-birth | hash 
1 | test | 12.12.12  | NULL 

Hay más de 1 millón de filas, donde de hash = NULL. Ahora necesito actualizar hash con una cadena MD5, que se basa en una columna correspondiente, p. nombre: hash = MD5 (prueba)

Sé cómo hacerlo para una sola fila. ¿Pero cómo hacer eso para todas las filas en una sola instrucción SQL?

+1

A veces es más rápido que el de google para enviar una pregunta ... http://dev.mysql.com/doc/refman/5.5/en/update.html – Cylindric

Respuesta

18

Prueba esto:

UPDATE yourtable 
SET hash = MD5(name) 
WHERE hash IS NULL 

Tenga en cuenta que la prueba es hash IS NULL y no hash = NULL como los escribió en su pregunta.

+0

Muchas gracias - funcionó como ¡un encanto! –

+0

aquí está mi código: ACTUALIZAR usuarios SET reference_id = MD5 (name.now()) WHERE reference_id IS NULL. ¡Error! El nombre de la función no existe –

+0

¿Cuál es el rendimiento de esta consulta? ¿Hay mejores formas? noob333

0

No es necesario escribir una consulta extra para la actualización.

  • Sólo tienes que ir a la mesa de diseño
  • crear una nueva columna
  • seleccione nueva columna creada, a continuación obtendrá propiedades
  • encontrar para computarizada especificación de columna
  • en TPP por encima de usted encontrará sección de fórmula escribe HashBytes ([Algo], [ColumnName])

creará automáticamente un valor hash para las filas que ya están presentes.

Check the attached image for more clarification

Cuestiones relacionadas