700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java sql 递归查询 My SQL 中如何递归查询所有的父节点

java sql 递归查询 My SQL 中如何递归查询所有的父节点

时间:2021-08-30 23:57:07

相关推荐

java sql 递归查询 My SQL 中如何递归查询所有的父节点

My SQL 中怎么递归查询所有的父节点

怎么根据某个menuId一直往上查,查到所有的父节点,我用的是mysql数据库。其SQL语句怎么写?

分享到:

------解决方案--------------------

有sql和存储过程sql,存储过程

------解决方案--------------------

只用一句SQL是办不到的,有个办法是在程序中写个递归的方法,方法参数是你想要查询的节点和一个List,然后方法里根据此节点去查父节点,当查出来的父节点不是“0”就把父节点放入参数里的List,并且递归调用自己,直到父节点为“0”,最后,参数的List里的值就是你要的结果了

------解决方案--------------------

//获取表中所有id

protectedListgetIdList(Stringsql,Object...params){

returnxxx;

}

//获取该menu下的所有子节点

privateListgetMenuChildrenIds(longmenuId){

Stringsql="selectmenu_idfromtest_tbwherep_id=?";

returngetIdList(sql,menuId);

}

publicvoidgetAllChildren(longmenuId,ListmenuIdList){

ListchildrenIds=getMenuChildrenIds(menuId);

for(longmenu_Id:childrenIds){

menuIdList.add(menu_Id);

//计数

intcount=geliDao.count("selectcount(1)fromtest_tbwherep_id=?",menu_Id,status);

if(count>0){

getAllChildren(menu_Id,menuIdList);

}

}

}

//

publicList

returnorm.list(Menu.class,getMenuChildrenIds(menuId).toArray());

}

//执行,全找出来menuIds,放到list里面

ListmenuIds=newArrayList();

menuIds.add(menu.getMenuId());

getAllChildren(menu.getMenuId(),menuIds);

大概就是这么个意思了,我也胡乱贴上去的,希望对你有帮助

------解决方案--------------------

mysql不支持这个,楼主可以考虑一下自己写个放在类中

循环遍历取父ID,拼成string或者json

再或者只有更改表结构,

如Aid:01

Bid:0101

Cid:010101

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。