sql >> データベース >  >> RDS >> Mysql

MySQLのフィールドと親による順序

    parent_idを保持する方がよい ただし、親の名前ではありません。

    テーブルを注文する簡単な解決策は次のとおりです http://sqlfiddle.com/#!9/2a1fb / 3

    SELECT *
    FROM table1
    ORDER BY 
       CASE WHEN parent_id IS NULL THEN CAST(ID AS CHAR)
       ELSE CONCAT(CAST(parent_id AS CHAR),'-', CAST(ID AS CHAR)) END
    

    編集1 バリアント#2 :-) http://sqlfiddle.com/#!9/76dcb/23

    SELECT t1.* 
    FROM table1 t1
    LEFT JOIN table1 t2
    ON t2.ID = t1.parent_id
    ORDER BY 
       CASE WHEN t2.ord_idx IS NULL THEN CAST(t1.ord_idx AS CHAR)
       ELSE CONCAT(CAST(t2.ord_idx AS CHAR),'-',CAST(t1.ord_idx AS CHAR)) END
    

    編集2 この順序がどのように機能するかを確認するには、次のようなパーツを選択するためにこのフィールドを追加するだけです。

    SELECT t1.*, CASE WHEN t2.ord_idx IS NULL THEN CAST(t1.ord_idx AS CHAR)
       ELSE CONCAT(CAST(t2.ord_idx AS CHAR),'-',CAST(t1.ord_idx AS CHAR)) END as my_order 
    FROM table1 t1
    LEFT JOIN table1 t2
    ON t2.ID = t1.parent_id
    ORDER BY 
       CASE WHEN t2.ord_idx IS NULL THEN CAST(t1.ord_idx AS CHAR)
       ELSE CONCAT(CAST(t2.ord_idx AS CHAR),'-',CAST(t1.ord_idx AS CHAR)) END
    


    1. PostgreSQL PL / Python:virtualenvでストアドプロシージャを呼び出す

    2. MySQLでprintステートメントをシミュレートするにはどうすればよいですか?

    3. NetBeanGUIでのユーザー入力に従ってireportを生成する方法

    4. SQL Serverで単一のテーブルに結合して要約を作成するにはどうすればよいですか?