sql >> Databáze >  >> RDS >> Mysql

Jak ukládám objednávky?

Objednávky můžete uchovávat jako literály a používat lexikální řazení:

1. A
2. Z

Přidat úkol:

1. A
3. L
2. Z

Přidat další:

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

Přesunout 2 mezi 1 a 4:

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

atd.

Aktualizujete pouze jeden záznam najednou:stačí vzít průměrné písmeno mezi prvními, které se liší:pokud vložíte mezi A a C , vezmete B , pokud vložíte mezi ALGJ a ALILFG , vezmete ALH .

Písmeno vedle existujícího se počítá jako existující zřetězené s písmenem vedle Z . Tj. pokud potřebujete vložit mezi ABHDFG a ACSD F, počítáte to mezi ABH a AB(Z+) a napište AB(letter 35/2) , to je ABP .

Pokud vám dojde délka řetězce, můžete vždy provést úplnou změnu pořadí.

Aktualizace:

Svá data si také můžete ponechat jako propojený seznam.

Podívejte se na článek na mém blogu o tom, jak to udělat v MySQL :

Stručně řečeno:

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

Při přesouvání položek budete muset aktualizovat maximálně 4 řádky.

Zdá se, že toto je nejúčinnější způsob, jak udržovat uspořádaný seznam, který se často aktualizuje.



  1. Jak se počítá shlukovací faktor Oracle Index

  2. Jak použít připravený příkaz pro výběrový dotaz v Javě?

  3. Jak vypsat všechny tabulky v Oracle

  4. Povolená velikost paměti 134217728 bajtů je vyčerpána (pokuseno alokovat 42 bajtů)