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

自己参照テーブルからの階層データの取得

    データベースがSQL2005/2008の場合、...

    これを取得する最も簡単な方法は、再帰するように設計されたCTE(共通テーブル式)を使用することです。

     WITH myCTE (Item_id, Depth)
     AS
     (
        Select Item_ID, 0 as Depth From yourTable where Item_Parent=0
        Union ALL
        Select yourTable.Item_ID, Depth + 1 
        From yourTable 
        inner join myCte on yourTable.item_Parent = myCte.Item_Id
     )
    
     Select Item_id, Depth from myCTE
    

    出力は次のとおりです。

    Item_Id  Depth
        1   0
        2   0
        3   1
        4   1
        5   2
    

    そこから、必要に応じてフォーマットできます。



    1. データベースの負荷分散:分散型と集中型のセットアップ

    2. ビジネス継続性のためのPostgreSQLの構成

    3. MySQLでテキスト列にデフォルト値を設定できないのはなぜですか?

    4. MySQLのSelectLast_Insert_IDのスレッドセーフ