mysql递归查询子记录,比如部门有三级,根据第一级id查询第二级和第三级所有子记录

1.查询江苏省所有子记录id

2.表结构和数据
在这里插入图片描述
3.sql语句

SELECT
		id
		FROM
		(
		SELECT
		t1.dept_id id,
		IF
		( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', dept_id ), 0 ) AS ischild
		FROM
		( SELECT dept_id, parent_id FROM sys_dept  ORDER BY parent_id, dept_id ) t1,
		( SELECT @pids := 要查询的菜单节点 id) t2
		) t3
		WHERE
		ischild != 0

4在navicat中执行sql
执行结果

在这里插入图片描述
在这里插入图片描述
if语句类似三目运算符,当exprss1成立时,执行express2,否则执行express3;

FIND_IN_SET(str,strlist),str 要查询的字符串,strlist 字段名 参数以”,”分隔 如 (1,2,6,8),查询字段(strlist)中包含(str)的结果,返回结果为null或记录

如果parent_id 在@pid中,则将@pid 里面再加上parent_id,按行依次执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值