sql >> Database teknologi >  >> RDS >> Mysql

Hvordan opbevarer jeg ordrer?

Du kan holde orden som bogstavelige ord og bruge leksikal sortering:

1. A 2. Z

Tilføj en opgave:

1. A 3. L 2. Z

Tilføj flere:

1. A 4. B 3. L 2. Z

Flyt 2 mellem 1 og 4:

1. A 2. AL 4. B 3. L

osv.

Du opdaterer kun én post ad gangen:tag blot et gennemsnitligt bogstav mellem de første, der adskiller sig:hvis du sætter mellem A og C , tager du B , hvis du sætter mellem ALGJ og ALILFG , tager du ALH .

Bogstav ved siden af ​​eksisterende tæller som eksisterende sammenkædet med bogstavet ved siden af ​​Z . Dvs. hvis du har brug for at sætte mellem ABHDFG og ACSD F, du tæller det som mellem ABH og AB(Z+) , og skriv AB(letter 35/2) , det er ABP .

Hvis du løber tør for strenglængde, kan du altid udføre en fuld genbestilling.

Opdatering:

Du kan også beholde dine data som en sammenkædet liste.

Se artiklen i min blog om, hvordan du gør det i MySQL :

I en nøddeskal:

/* 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
 

Når du flytter elementerne, skal du højst opdatere 4 rækker.

Dette ser ud til at være den mest effektive måde at holde en ordnet liste, der opdateres ofte.



  1. Dynamisk pivot i oracle sql - Procedure

  2. Brug af variabler i MySQL UPDATE (PHP/MySQL)

  3. Hent alle rækker fra sidste måned (Laravel + Eloquent)

  4. Find værdier, der ikke indeholder tal i MySQL