2011-07-07 22 views
27

I tiene una tabla con las columnas: (esto es sólo un ejemplo tengo 50K registros)columnas de actualización con un número de secuencia mysql

Name, Number 

Joe  Null 
Michael Null 
Moses Null 

I para actualizar el número con un número de secuencia a partir de 1-3 por lo que se verá así:

Name, Number 

Joe  1 
Michael 2 
Moses 3 

¿Cómo puedo hacerlo en SQL para MySQL en un comando SQL

+1

¿En qué se basa el supuesto orden? ¿Alfabético? – JNK

+0

No importa. Necesito tener en números todos los números del 1-3 (1-size) – Dejell

Respuesta

1

podría intentar configurar el Number a AUTO_INCREMENT así que se generarán los números:

ALTER TABLE your_table MODIFY Number INT AUTO_INCREMENT 

Aparte de eso, es probable que tenga: a) rutinas almacenadas b) código de aplicación

2

Luché para encontrar una respuesta en línea y descubrí que el siguiente método me funcionaba, basado en parte de la información anterior pero con un enfoque de actualización diferente. Publicación aquí en caso de que ayude a otros también.

Nota: para mi conjunto de datos, el rango es un cálculo fijo de una sola vez, no cambiará. Quería agregarlo como una columna para guardar ejecutando un cálculo cada vez que extraigo los datos de MySQL en Python.

Solución utilicé:

  • rango establecido en 0 (como el anterior)
  • crear una tabla temporal que contiene la consulta de selección para calcular el rango
  • actualización de la tabla original con las filas calculadas.

nombres de las muestras utilizadas, rowid es el identificador único para cada fila, el valor es la métrica que se utiliza para determinar el rango para cada fila

SET @rank=0; 
CREATE TEMPORARY TABLE rank_temp 
AS 
(SELECT rowid, value, @rank:[email protected]+1 AS rank FROM source_table ORDER BY value ASC); 

UPDATE sourcetable a, rank_temp b 
SET a.rank = b.rank 
WHERE a.rowid = b.rowid; 

Es un método crudo, pero ha trabajado en mi conjunto de datos.

+1

a veces las gemas se pueden encontrar código crudo interno, muy útil en mi caso, intento maravilloso de hecho –

Cuestiones relacionadas