Puede mantener las órdenes como literales y usar la ordenación léxica:
1. A
2. Z
Agregar una tarea:
1. A
3. L
2. Z
Añadir más:
1. A
4. B
3. L
2. Z
Mover 2 entre 1 y 4:
1. A
2. AL
4. B
3. L
etc.
Actualiza solo un registro a la vez:solo toma una letra promedio entre las primeras que difieren:si pones entre A
y C
, tomas B
, si pones entre ALGJ
y ALILFG
, tomas ALH
.
Letra junto a los recuentos existentes como existentes concatenados con el junto a Z
. Es decir. si necesita poner entre ABHDFG
y ACSD
F, lo cuentas entre ABH
y AB(Z+)
, y escribe AB(letter 35/2)
, eso es ABP
.
Si se queda sin longitud de cadena, siempre puede realizar un nuevo pedido completo.
Actualización:
También puede mantener sus datos como una lista enlazada.
Ver el artículo en mi blog sobre cómo hacerlo en MySQL
:
En pocas palabras:
/* 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
Al mover los elementos, deberá actualizar como máximo 4
filas.
Esta parece ser la forma más eficiente de mantener una lista ordenada que se actualice con frecuencia.