Tuve que hacer algo similar. La mejor manera de hacerlo era la siguiente (se puede ejecutar en una consulta SQL si quieres, pero ten en cuenta que se trata de un consumo de recursos operación lenta y muy):
Asegúrese de hacer una RESPALDO DE TU MESA, INCLUYENDO ESTRUCTURA Y DATOS ANTES DE COMENZAR ESTA CONSULTA!
ALTER TABLE your_table ADD COLUMN temp_id INT UNSIGNED NOT NULL;
SET @a:=0;
UPDATE your_table SET [email protected]:[email protected]+1 ORDER BY `date` ASC;
ALTER TABLE your_table DROP id;
ALTER TABLE your_table CHANGE temp_id id INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (id);
ALTER TABLE your_table CHANGE COLUMN id id INT(10) FIRST;
Pero no se olvide de cambiar "your_table" con el nombre de la tabla, y el orden por columnas. Aquí os explico lo que está haciendo este camino paso a paso:
- En primer lugar se agrega una nueva columna llamada "temp_id" (asegurarse de que no es un nombre que ya está usando);
- A continuación, agrega una variable de temperatura igual a 0 (o lo que desee para que su ID comience en);
- Luego actualiza su tabla, fila por fila, mediante la lógica de ORDEN establecida, estableciendo un valor para su nueva columna "temp_id" igual a la variable que ha establecido, luego incremente esta variable en 1 (puede hacer algo funky aquí, por ejemplo, si quiere que sus identificaciones sean siempre iguales, puede establecer @ a + 2);
- En el siguiente paso suelta (elimina) su ID de columna anterior;
- Luego cambia el nombre de su columna temp_id a ID y lo identifica como un entero positivo con incremento automático que es la clave principal de su tabla.
- Como ID ahora es la columna temp_id recién agregada, se encuentra al final de la estructura de la tabla. Para moverlo nuevamente como primera columna, ejecuta la última consulta para asegurarse de que sea la primera columna.
Esperar que las filas * se almacenen * en un orden particular en cualquier base de datos relacional probablemente no sea una buena idea. Esto es para lo que son los índices y ORDER BYs. Los ID son solo identificadores; si el tipo importante es por fecha/hora, ¿a quién le importan cuáles son los ID? – Joe