2010-03-27 12 views
0

J'ai une table avec une colonne "SortID" qui est numérotée en utilisant des nombres consécutifs. Chaque fois qu'une ligne est supprimée, elle laisse un espace. Existe-t-il un moyen d'utiliser pur SQL pour mettre à jour les lignes avec leur numéro de ligne? Quelque chose comme ceci:Comment puis-je définir une valeur de colonne de compteur dans MySQL?

UPDATE tbl SET SortID={rowindex} ORDER BY SortID 

(Je sais que ce n'est pas SQL valide, c'est la raison pour laquelle je demande de l'aide)

Ceci devrait la première ligne à # 1, la deuxième rangée à # 2 ... etc. Est-ce possible en utilisant SQL? S'il vous plaît pardonnez la question mal formulée, je ne suis pas vraiment sûr de la meilleure façon de demander cela. :)

Répondre

0

Vous pouvez utiliser des variables définies par l'utilisateur mysql

SET @pos=0; 
SELECT @pos:[email protected]+1, * FROM tbl ORDER BY SortID; 
1

Êtes-vous sûr de l'avoir besoin? La couche de présentation est utilisée pour numéroter la plupart du temps.

+0

Ceci permet de stocker l'ordre de tri d'une liste d'éléments gérés par l'utilisateur. –

+0

@Jon mais chaque fois qu'une ligne est supprimée, cette "lacune" n'affecterait pas un ordre de tri –

+0

Pas nécessairement lors de la suppression, mais sur les insertions, cela affecte la commande. Je numérote généralement les lignes en comptant 2, puis je peux insérer une nouvelle ligne au milieu et mettre à jour le sortID dans la même transaction. –