Vous pouvez conserver les commandes sous forme de littéraux et utiliser le tri lexical :
1. A
2. Z
Ajouter une tâche :
1. A
3. L
2. Z
Ajouter plus :
1. A
4. B
3. L
2. Z
Déplacez 2 entre 1 et 4 :
1. A
2. AL
4. B
3. L
etc.
Vous mettez à jour un seul enregistrement à la fois :prenez simplement une lettre moyenne entre les premières qui diffèrent :si vous mettez entre A
et C
, vous prenez B
, si vous mettez entre ALGJ
et ALILFG
, vous prenez ALH
.
La lettre à côté de l'existant compte comme existante concaténée avec celle à côté de Z
. C'est à dire. si vous avez besoin de mettre entre ABHDFG
et ACSD
F, vous le comptez entre ABH
et AB(Z+)
, et écrivez AB(letter 35/2)
, c'est-à-dire ABP
.
Si vous manquez de longueur de chaîne, vous pouvez toujours effectuer une nouvelle commande complète.
Mise à jour :
Vous pouvez également conserver vos données sous forme de liste liée.
Voir l'article de mon blog sur la façon de le faire dans MySQL
:
En un mot :
/* This just returns all records in no particular order */
SELECT *
FROM t_list
id parent
------- --------
1 0
2 3
3 4
4 1
/* This returns all records in intended order */
SELECT @r AS _current,
@r := (
SELECT id
FROM t_list
WHERE parent = _current
)
FROM (
SELECT @r := 0
) vars,
t_list
_current id
------- --------
0 1
1 4
4 3
3 2
Lors du déplacement des éléments, vous devrez mettre à jour au plus 4
lignes.
Cela semble être le moyen le plus efficace de conserver une liste ordonnée fréquemment mise à jour.