Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да съхранявам поръчки?

Можете да поддържате поръчките като литерали и да използвате лексикално сортиране:

1. A
2. Z

Добавете задача:

1. A
3. L
2. Z

Добавете още:

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

Преместете 2 между 1 и 4:

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

и др.

Актуализирате само един запис наведнъж:просто вземете средна буква между първите, които се различават:ако поставите между A и C , приемате B , ако поставите между ALGJ и ALILFG , приемате ALH .

Буквата до съществуващите се счита за съществуваща, свързана с тази до Z . I. e. ако трябва да поставите между ABHDFG и ACSD F, отчитате го като между ABH и AB(Z+) и напишете AB(letter 35/2) , което е ABP .

Ако дължината на низа ви свърши, винаги можете да извършите пълно пренареждане.

Актуализация:

Можете също да запазите данните си като свързан списък.

Вижте статията в моя блог за това как да го направите в MySQL :

Накратко:

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

Когато премествате елементите, ще трябва да актуализирате най-много 4 редове.

Това изглежда е най-ефективният начин за поддържане на подреден списък, който се актуализира често.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате MySQL Rollup

  2. Производителност на MySQL:Идентифициране на дълги заявки

  3. mysql ПЪЛЕН ТЕКСТ търси няколко думи

  4. Разбор на низ в mysql Дата

  5. MySQLdb на Python не може да намери libmysqlclient.dylib с Homebrewed MySQL