第一种用sql实现:
select
a.字段一,
a.字段二,
b.字段三
from 表名 a
left join 表名 b
on a.p_id = b.tm_id
第二种查询出来之后在java中通过递归,按照主键id和p_id进行匹配获取对应的父菜单名称
这种业务最好在java中处理,不要去写复杂的sql,不好维护。
咋一看以为需要递归,但仔细一看,你只需要展现当前层级和父层级两个,不需要找祖父层级,那么使用简单的自关联即可
select a.tm_id,a.tm_name,b.tm_id,b.tm_name
from t a left join t b on a.pid=b.tm_id
当然,如果你需要找到当前层级往上的所有层级,mysql8.0中可以使用with递归sql,写法也不复杂
内关联查询,sql如下,xxx为你的表名,如果对你有所帮助,望采纳
SELECT m.*,m1.menu_name parentMenuName from xxx m LEFT JOIN xxx m1 on m.p_id = m1.tm_id