Más que un artículo es una autonota, con una situación en la que me he encontrado hoy mismo.
A veces pasa que por error o necesidades del proyecto, te encuentras con una tabla que no tiene un clave primaria. Al querer añadir un nuevo campo id resulta que todos se establecen a 0, y no puedes usar el AUTO_INCREMENT de MySQL ni siquiera establecerlo como PRIMARY_KEY. Para solucionarlo hay que poner manualmente un valor distinto para cada registro.
Para hacerlo rápidamente, podemos recurrir a esta query:
SET @position := 0; -- Define una variable UPDATE mi_tabla SET id = (@position := @position + 1) WHERE id = 0;
Esto cambiará todos los campos ID por un valor que se genera usando la variable @position, y así establecemos un id diferente, que nos permitirá cambiar el campo como PRIMARY_KEY y AUTO_INCREMENT.