mysql实现oracle的start with递归查询

oracle查询语句

select dept_code from 表名 start with dept_code = '41311046430000001' connect by PRIOR id = PARENT_ID

结果如下:

改为mysql查询,实用函数实现

select sd.* from 
	(select * from 表名) sd,
	(select @pid := (select id from 表名 where dept_code = '41311046430000001')) pd	-- 初始化变量,给变量赋值为父单位
where 
	(
	FIND_IN_SET(PARENT_ID,@pid) -- 筛选父单位
		or 
	FIND_IN_SET(id,@pid)	-- 筛选下级单位
	)
	and @pid := CONCAT(@pid,',',id)	-- 修改变量值,添加每个符合的单位id

posted @ 2024-05-29 16:19  程长新  阅读(18)  评论(0编辑  收藏  举报