Anda dapat menyimpan pesanan sebagai literal, dan menggunakan pengurutan leksikal:
1. A
2. Z
Tambahkan tugas:
1. A
3. L
2. Z
Tambahkan lebih banyak:
1. A
4. B
3. L
2. Z
Pindahkan 2 antara 1 dan 4:
1. A
2. AL
4. B
3. L
dll.
Anda hanya memperbarui satu catatan pada satu waktu:cukup ambil satu huruf rata-rata di antara yang pertama yang berbeda:jika Anda meletakkan di antara A
dan C
, Anda mengambil B
, jika Anda meletakkan di antara ALGJ
dan ALILFG
, Anda mengambil ALH
.
Huruf di sebelah yang ada dihitung sebagai yang ada digabungkan dengan yang di sebelah Z
. saya. jika Anda perlu meletakkan di antara ABHDFG
dan ACSD
F, Anda menghitungnya di antara ABH
dan AB(Z+)
, dan tulis AB(letter 35/2)
, yaitu ABP
.
Jika Anda kehabisan panjang string, Anda selalu dapat melakukan penataan ulang penuh.
Pembaruan:
Anda juga dapat menyimpan data Anda sebagai daftar tertaut.
Lihat artikel di blog saya tentang cara melakukannya di MySQL
:
Singkatnya:
/* 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
Saat memindahkan item, Anda harus memperbarui paling banyak 4
baris.
Tampaknya ini cara paling efisien untuk menyimpan daftar terurut yang sering diperbarui.