Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przechowywać zamówienia?

Możesz zachować zamówienia jako literały i używać sortowania leksykalnego:

1. A
2. Z

Dodaj zadanie:

1. A
3. L
2. Z

Dodaj więcej:

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

Przesuń 2 między 1 a 4:

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

itp.

Aktualizujesz tylko jeden rekord na raz:po prostu weź średnią literę między pierwszymi, które się różnią:jeśli umieścisz między A i C , bierzesz B , jeśli umieścisz między ALGJ i ALILFG , bierzesz ALH .

Litera obok istniejącego liczy się jako istniejąca, połączona z literą obok Z . Tj. jeśli potrzebujesz umieścić pomiędzy ABHDFG i ACSD F, liczysz to jako pomiędzy ABH i AB(Z+) i napisz AB(letter 35/2) , czyli ABP .

Jeśli skończy Ci się długość ciągu, zawsze możesz wykonać pełną zmianę kolejności.

Aktualizacja:

Możesz również zachować swoje dane w postaci połączonej listy.

Zobacz artykuł na moim blogu, jak to zrobić w MySQL :

W skrócie:

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

Podczas przenoszenia elementów musisz zaktualizować co najwyżej 4 wiersze.

Wydaje się to być najskuteczniejszym sposobem utrzymywania uporządkowanej listy, która jest często aktualizowana.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekonwertować strefę czasową w MySQL

  2. Wiosna przełącz się na uwierzytelnianie Ldap i urzędy bazy danych

  3. Jak zainstalować MySQL Workbench w systemie Windows

  4. Jak ustawić domyślny silnik przechowywania używany przez MySQL?

  5. mysqli_query() zawsze zwraca prawdę