Bạn có thể giữ đơn đặt hàng dưới dạng chữ và sử dụng sắp xếp từ vựng:
1. A
2. Z
Thêm một công việc:
1. A
3. L
2. Z
Thêm nữa:
1. A
4. B
3. L
2. Z
Di chuyển 2 từ 1 đến 4:
1. A
2. AL
4. B
3. L
vv
Bạn chỉ cập nhật một bản ghi tại một thời điểm:chỉ cần lấy một chữ cái trung bình giữa các bản ghi đầu tiên khác nhau:nếu bạn đặt giữa A
và C
, bạn lấy B
, nếu bạn đặt giữa ALGJ
và ALILFG
, bạn lấy ALH
.
Chữ cái bên cạnh số hiện có là số hiện có được nối với chữ cái bên cạnh Z
. I E. nếu bạn cần đặt giữa ABHDFG
và ACSD
F, bạn tính nó nằm trong khoảng từ ABH
và AB(Z+)
và viết AB(letter 35/2)
, đó là ABP
.
Nếu bạn sử dụng hết độ dài chuỗi, bạn luôn có thể thực hiện sắp xếp lại đầy đủ.
Cập nhật:
Bạn cũng có thể giữ dữ liệu của mình dưới dạng danh sách được liên kết.
Xem bài viết trong blog của tôi về cách thực hiện điều đó trong MySQL
:
Tóm lại:
/* 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
Khi di chuyển các mục, bạn cần cập nhật tối đa 4
hàng.
Đây dường như là cách hiệu quả nhất để giữ một danh sách có thứ tự được cập nhật thường xuyên.