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.