5
+--------+---------+-----------+
|   id   | title   | parent_id |
+--------+---------+-----------+
|    1   | Lvl-1   |   null    |
+--------+---------+-----------+
|    2   | Lvl-2   |   null    |
+--------+---------+-----------+
|    3   | Lvl-11  |     1     |
+--------+---------+-----------+
|    4   | Lvl-12  |     1     |
+--------+---------+-----------+
|    5   | Lvl-121 |     4     |
+--------+---------+-----------+

各行のルート親を実際に取得するにはどうすればよいですか
。たとえば、id 5親がid 4あり、id 4親がある行の場合、id 1ルートIDid 5id 1
どうすればよいかわからないので、1つだけを使用してこれを解決する方法はありますか。クエリ

4

3 に答える 3

3

fooこれは、テーブルが呼び出され、次のルートを知りたいと仮定して、要求していることを実行する短いクエリです<id>

SELECT f.id, f.title
FROM (
    SELECT @id AS _id, (SELECT @id := parent_id FROM foo WHERE id = _id)
    FROM (SELECT @id := <id>) tmp1
    JOIN foo ON @id IS NOT NULL
    ) tmp2
JOIN foo f ON tmp2._id = f.id
WHERE f.parent_id IS NULL
于 2015-06-19T19:54:53.947 に答える
0

ツリー構造が2層以上の深さである場合は、変更されたプレオーダーツリートラバーサルを検索しています

于 2011-12-12T20:11:47.787 に答える