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,(...