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

MySQLの入れ子集合-ノードの親を見つける方法は?

    これを見てください質問 。それはあなたのものに似ています。そこにあなたが必要とするかもしれない質問を投稿しました。

    SELECT title, (SELECT TOP 1 title 
               FROM tree t2 
               WHERE t2.lft < t1.lft AND t2.rgt > t1.rgt    
               ORDER BY t2.rgt-t1.rgt ASC) AS parent
    FROM tree t1
    ORDER BY rgt-lft DESC
    

    必要なものがあるといいのですが。

    次の表の場合:

    +-------------+----------------------+-----+-----+
    | category_id | name                 | lft | rgt |
    +-------------+----------------------+-----+-----+
    |           1 | ELECTRONICS          |   1 |  20 |
    |           2 | TELEVISIONS          |   2 |   9 |
    |           3 | TUBE                 |   3 |   4 |
    |           4 | LCD                  |   5 |   6 |
    |           5 | PLASMA               |   7 |   8 |
    |           6 | PORTABLE ELECTRONICS |  10 |  19 |
    |           7 | MP3 PLAYERS          |  11 |  14 |
    |           8 | FLASH                |  12 |  13 |
    |           9 | CD PLAYERS           |  15 |  16 |
    |          10 | 2 WAY RADIOS         |  17 |  18 |
    

    出力を生成します:

    title                | parent
    ----------------------------------------------
    ELECTRONICS          | NULL
    PORTABLE ELECTRONICS | ELECTRONICS
    TELEVISIONS          | ELECTRONICS
    MP3 PLAYERS          | PORTABLE ELECTRONICS
    FLASH                | MP3 PLAYERS
    CD PLAYERS           | PORTABLE ELECTRONICS
    2 WAY RADIOS         | PORTABLE ELECTRONICS
    TUBE                 | TELEVISIONS
    LCD                  | TELEVISIONS
    PLASMA               | TELEVISIONS
    


    1. 「SQLServerがコンポーネント「アドホック分散クエリ」のステートメント「OpenRowset/OpenDatasource」へのアクセスをブロックした」を修正

    2. SQLクエリでのタイムゾーン変換

    3. MariaDBで数値を含まない値を取得する方法

    4. MySQLWorkbenchがクエリ結果を表示しない