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 @   程长新  阅读(127)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示