我的表有这个值,其中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时,你会得到差异和我想要的东西。
答案 0 :(得分: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;
答案 1 :(得分:1)
您只需要将所有数据与id和parent_id一起排序。只需使用order by子句。
select * from table order by nvl(Parent_Menu_id,Menu_id),Menu_id;