SQL 达梦数据库父子表(树表)查询所有子集,父级

先看表
在这里插入图片描述
图中 dic_id 为子健 parent_dic_id 为父建 即 dic_ic = parent_dic_id

现在要查出 父id为1 的所有子集

sql 对应为 :
下面展示一些 内联代码片

select * from T_SYS_DIC 
start with dic_id = '1000076' CONNECT BY PRIOR dic_id =  parent_dic_id

对应结果:可以看出所有数据均为父 id为 1000076 的子集
在这里插入图片描述
注意:PRIOR 用法,放在子id前查找数据为已该子id下的所有子集
在这里插入图片描述
放在父id前查找数据为该父id上的所有父级 看效果
在这里插入图片描述
结果:
在这里插入图片描述

该数据为学习测试数据,如有需要请改为自己对应业务数据,欢迎指教!

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 .. DROP TABLE IF EXISTS `merchant_region`; CREATE TABLE `merchant_region` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) NULL DEFAULT NULL, `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMAR 有一个单位lyq_unit,中存在单位的父子关系,但子单位只有对应上级部门的id,并没有上级部门的名称,现在需要查找出子单位对应的上级部门名称,内容如下图:pid为父id。 SELECT * FROM table_name WHERE Id=‘4’ --的主键ID UNION ALL SELECT T0.* FROM TEMP,table_name T0 WHERE TEMP.Id=T0.ParentId --子级ID==父级ID SELECT * FROM TEMP; –根据指定节点ID获取所有父节点– WITH TEMP AS SELECT * FROM table_name WHERE Id=‘3 t1.*, t2.*, IF(FIND_IN_SET(parent_id, @pids) > 0, @pids := CONCAT(@pids, ',', id), '0') AS isChild FROM ( SELECT * FROM rule_enti 10月来了,小编是感觉到了春困秋乏了,中午只想睡觉,反正还要一会儿才能进入状态,小编要好好利用这一点的时间写一会儿博客,小编是不是很积极呢?言归正传,小编遇到了一个存在三级菜单的查询方法,需求是根据父级查询父级下的所有数据,小编就在百度上找到了这么一条数据,请看代码 一级子集:select * from table where parentId=5 二级子集:select * from tabl... 语句的作用如果用php程序查询的话,要用递归多次查询数据库,很慢,也增加了服务器的压力,后来发现用一句sql就能直接返回所有的父级或子级用户t_id | parent_id1 | 02 | 13 | 04 | 25 | 4查找父级例子sql语句 查找所有父级(包含本身)SELECT T2.t_idFROM (SELECT@r AS _id,(...