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,按行依次执行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值