2011-01-25 3 views
0

J'ai une table où les entrées sont listées et parfois modifiées et supprimées ce qui crée un espace. Exemple: 1,2,4,5,6,8,10 Je voudrais les avoir dans l'ordre exemple: 1,2,3,4,5,6,7Comment réparer les index SQL pour supprimer des espaces/sauts?

Y at-il un code pour le faire qick et indolore?

Merci.

+6

Vous ne devriez pas faire cela. Il n'y a rien à gagner et beaucoup à perdre de telles actions. – Mchl

+0

Cette liste d'entrées n'est pas représentée dans une autre table? Peut-être voir [cette question] (http://stackoverflow.com/questions/287794/multivalued-attributes-in-databases). – pascal

+0

Certaines des réponses et des commentaires semblent supposer que vous dites que le champ de clé primaire change. Est-ce correct ou est-ce un champ non-clé? Quoi qu'il en soit, une approche différente serait probablement une bonne idée. –

Répondre

0

Si vous avez des contraintes de clé étrangère, alors vous devrez utiliser ON UPDATE CASCADE (quelque chose que j'ai tendance à éviter comme la peste).

Y a-t-il une bonne raison de s'assurer que ces chiffres sont séquentiels ou seulement pour l'esthétique?

Il n'y a aucun problème à avoir des clés «manquantes» - la base de données se soucie très peu.

Si vous avez vraiment besoin de faire cela, alors:

SET @indx = 1; 
UPDATE `table` SET `field` = (@indx:[email protected]+1) ORDER BY `field` ASC; 

Amusez-vous ...

+0

doit être à 0 – RichardTheKiwi

Questions connexes