0

我的表有这个值,其中 Menu_id 是该特定行的 ID,Parent_Menu_id 是 Id,它告诉该值的父 Id。

例如,Menu_Id 2 的 Parent_Menu_Id 为 NULL,这意味着它没有任何父级,而 3 的 parent_menu_d 为 2,这意味着 3 是 2 的子级。

在此处输入图像描述

但是,我面临一个问题,将所有父值和子值一起显示,这意味着输出应该是

Menu_id | Parent_Menu_id
-------------------------
2       |
3       |    2
9       |    2
4       |
5       |    4
6       |    4
7       |
8       |    7

我试过了

select menu_id,parent_menu_id from menu_test mt where parent_menu_id=(select menu_id from menu_test where mt.parent_menu_id=menu_id)

但是,在那种情况下,我只会得到子行。

即使我尝试过

 select distinct menu_id,parent_menu_id from menu_test CONNECT BY PRIOR menu_id=parent_menu_id order by menu_id,parent_menu_id

还是一样的问题一起列出

注意:两个输出看起来相同,但是当您看到 menu_id 9 时,您将得到不同之处和我想要的。

4

2 回答 2

2

也试试这个

SELECT menu_id, parent_menu_id
  FROM menu_test
START WITH parent_menu_id IS NULL
CONNECT BY PRIOR menu_id = parent_menu_id;
于 2013-09-25T06:10:57.197 回答
1

您只需要将所有带有 id 和 parent_id 的数据一起排序。只需为此使用 order by 子句。

     select * from table order by  nvl(Parent_Menu_id,Menu_id),Menu_id;
于 2013-09-25T05:45:14.377 回答