2012-04-20 23 views
12

Tengo una tabla en MySQL que tiene una columna de clave principal.Consulta para volver a indexar la clave principal de la base de datos MySQL

permite decir:

ID | Value 
1 | One 
2 | Two 
6 | Three 
8 | Four 
9 | Five 

¿Cómo consigo que sea:

ID | Value 
1 | One 
2 | Two 
3 | Three 
4 | Four 
5 | Five 

No hay otras tablas. Sólo el único. Solo quiero que la identificación esté en una serie adecuada.

¿Alguna sugerencia? Una consulta tal vez ... :)

+0

que sé acerca de la adquisición. Eso no es lo que quiero ... Quiero que el ID esté en una secuencia perfecta ... – LearningDeveloper

Respuesta

30

Incluso hay una forma sencilla de lograr el resultado por escrito esta consulta

SET @newid=0; 
UPDATE tablename SET primary_key_id=(@newid:[email protected]+1) ORDER BY primary_key_id; 

Esta consulta se indexar las principales aperturas clave de 1

+6

Esta debería ser la respuesta aceptada –

+1

Cambié mi respuesta, aunque no he probado esta. – LearningDeveloper

+0

Esta solución es excelente, pero tenga en cuenta la relación con otras tablas basadas en este campo que reitera. Si tiene restricciones con la cláusula de actualización en las otras tablas, está bien; si no, también debería actualizar la ID en las otras tablas;) – qdev

9

Me parece que tiene dos opciones.

1) cree una nueva tabla y copie los datos existentes.

2) agregue otro campo de autoincremento a la tabla existente, luego elimine la columna original.

ALTER TABLE tableName ADD NewIdn INT NOT NULL AUTO_INCREMENT KEY 
+3

Funciona bien ... Gracias por la solución "dbaseman" .. :) Tuve que soltar la columna de ID primero, ya que lo hizo no permite dos columnas con AUTO_INCREMENT. \t "ALTER TABLE' test' DROP COLUMN 'id'" – LearningDeveloper

0

hice esto en phpmyadmin desactivando la casilla A_I (ajuste de incremento automático), hacer clic en Guardar, y después de comprobar de nuevo, y de nuevo clic en Guardar.

Cuestiones relacionadas