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
    

    など

    一度に更新するレコードは1つだけです。異なる最初のレコードの間で平均的な文字を取得するだけです。Aの間に置く場合 およびCBを使用します 、ALGJの間に置く場合 およびALILFGALHを使用します 。

    既存の横の文字は、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. PHPとMYSQLを使用したフィールド検索の組み合わせ

    2. .frmおよび.optファイルをMySQLにインポートします

    3. 単純なMySQLデータベース設計に関するヒントが必要

    4. パラメータをt-sqlスクリプトに渡すにはどうすればよいですか?