我有一个菜单表,我很难选择没有孩子的所有父菜单。
SELECT
CASE
WHEN (SELECT COUNT(1) children
FROM menu
WHERE cod_idiom = 'EN'
START WITH cod_menu_parent = m1.cod_menu
CONNECT BY PRIOR cod_menu = cod_menu_parent ) = 0 THEN
cod_menu
END x
FROM menu m1
WHERE m1.isSubMenu = 'T'
* isSubMenu ='T'表示它可能(应该)有孩子,可能是子菜单或文件。
这个想法是首先查询所有子菜单,获取他们的菜单代码,然后做一个CONNECT BY PRIOR来计算它的孩子。
以上查询没有预期效果,你们有什么想法吗?
答案 0 :(得分:1)
SELECT m1.cod_menu
FROM menu m1
WHERE NOT EXISTS(SELECT NULL
FROM MENU m2
WHERE m1.cod_menu = m2.cod_menu_parent)
AND m1.isSubMenu = 'T'