2010-12-14 19 views
37

un campo del campo de mi tabla se establece en 0 para todas las filas. pero quiero actualizar al valor incremental en el paso 1 en una consulta de actualización.actualiza los valores de forma incremental en mysql

¿cómo puedo hacer eso en mysql?

+0

Para aclarar: ¿Está preguntando cómo cambiar un conjunto de datos existente para que tenga números crecientes? –

+0

no, agregué este campo recientemente, por lo que se establece en 0 de forma predeterminada y no debe ser un incremento automático para la función. Solo quiero llenarlo con datos válidos. Espero poder aclararlo. –

Respuesta

92

Prueba esto:

mysql> select @i := 0; 
mysql> update bar set c = (select @i := @i + 1); 
3

Una forma es crear una nueva tabla con una columna AUTO_INCREMENT en lugar de la columna original, insertando todos los datos del antiguo en la nueva tabla, y luego renombrando el nuevo y eliminando el anterior.

Otra forma es ejecutar su consulta de actualización con un MySQL variable que genera un número creciente para cada fila (para emular la función ROW_NUMBER() que se encuentra en otros sistemas DBMS).

+0

como recuerdo lo hice antes de usar las variables de mysql, pero no recuerdo la solución en este momento. ; ( –

5
SET @a = 0; 
UPDATE customers SET id = @a:[email protected]+1; 

Usted puede ir para esto también.

+0

puede decirme cómo puedo implementar esto en php? –

Cuestiones relacionadas