Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie speichere ich Bestellungen?

Sie können Befehle als Literale behalten und lexikalische Sortierung verwenden:

1. A
2. Z

Aufgabe hinzufügen:

1. A
3. L
2. Z

Weitere hinzufügen:

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

Bewegen Sie 2 zwischen 1 und 4:

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

usw.

Sie aktualisieren jeweils nur einen Datensatz:Nehmen Sie einfach einen durchschnittlichen Buchstaben zwischen den ersten, die sich unterscheiden:Wenn Sie zwischen A setzen und C , nehmen Sie B , wenn Sie zwischen ALGJ setzen und ALILFG , nimmst du ALH .

Buchstabe neben Vorhandenem gilt als Vorhanden verkettet mit dem neben Z . I. e. wenn Sie zwischen ABHDFG setzen müssen und ACSD F, Sie zählen es zwischen ABH und AB(Z+) , und schreiben Sie AB(letter 35/2) , das ist ABP .

Wenn Ihnen die Zeichenfolgenlänge ausgeht, können Sie jederzeit eine vollständige Neuordnung durchführen.

Aktualisierung:

Sie können Ihre Daten auch als verknüpfte Liste speichern.

Sehen Sie sich den Artikel in meinem Blog an, wie man es in MySQL macht :

Kurz gesagt:

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

Beim Verschieben der Elemente müssen Sie höchstens 4 aktualisieren Zeilen.

Dies scheint der effizienteste Weg zu sein, um eine geordnete Liste zu führen, die häufig aktualisiert wird.