SELECT
@r AS _id,
(SELECT @r := `parent_id` FROM `sys_monitor_region` WHERE id = _id) AS parent_id,
@l := @l + 1 AS lvl
(SELECT @r :=5, @l := 0) vars,
`sys_monitor_region` h
WHERE @r <> 0) T1
JOIN `sys_monitor_region` T2 ON T1._id = T2.id
ORDER BY T1.lvl DESC;
将圈中的地方改为所查询的条件,如parent_id
查询结果:
表 POI 有 字段 Title CityID
表City 有字段 ID Title ParentCityID(归属City)
求当 烟台下的所有PoiTitle (包含烟台下的子城市中的PoiTitle)
第一步先
查询
烟台下所有城市(PCityId指向烟台) CTE
with cte_child(id,title,ParentCityId) as (select id,title,ParentCityId from CMSCity where Title=‘烟台’ union all
是否分支节点,通过判断该员工是否存在上级,并且上级是该员工的员工数量大于0,如果大于0表示该员工是分支节点,这里使用 sign() 函数返回标志。在员工表中,叶子节点指的是不是任何员工上级的员工,分支节点指的是自己是上级且还是某个员工的下属,根节点指的是没有上级的员工。同样这里使用 CTE 递归。SELECT a.EName 员工名,a.MGR 上级,b.SAL 上级薪水,B.Role 上级角色 FROM test.emps a。:员工A的上级是员工M,员工M的上级是员工B,员工B的上级是员工Z。
我们在项目开发过程,经常会遇到有文章分类分栏,菜单分类,视频分类等多级分类
那么这种多级分类我们在
数据
中又是如何设计的呢?在mybatis
查询
过程中又是如何多级
查询
的呢?
别着急,今年我们来解决这个需求,
当然,解决的方法有很多,这里我只介绍我自己使用的一种,有更好的方法可以评论区评论大家一起探讨
本次用到了 `Maven工程`、`Swagger`、`RESTful接口风格`、`MyBatis-Plus`
with 自定义结果名称(Id,Name,Pid) as (
select Id,Name,Pid from 要
查询
的表名称where Id ='' --顶级的
查询
条件,要
查询
哪个父级的所有子级,条件就写哪个
union all
select 要
查询
的表名称.Id,要
查询
的表名称.Name,要
查询
的表名称.Pid from 要
查询
的表名称,自定义结果名称 where 要
查询
的表名称.Pid = 自定义结果名称.Id
select * from 自定义结果名称;
Id,Name,Pid ..
select * //要
查询
的字段
from table //具有子接点id和父接点id的表
start with childid=id
数据
//给定一个开始
查询
的id(字段名
在最近的活字格项目中使用ActiveReports报表设计器设计一个报表模板时,遇到一个多级分类的难题:需要将某个部门所有销售及下属部门的销售金额汇总,因为下属级别的层次不确定,所以靠拼接子
查询
的方式显然是不能满足要求,经过一番实验,利用了CTE(Common Table Expression)很轻松解决了这个问题!
举例:有如下的部门表
以及员工表
如果想
查询
所有...