sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo guardo los pedidos?

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.