mysql子类是什么_MySQL 子类节点查询

以前做过类似的查询,是关于商品分类的,不过当时用的是MySQL自定义函数里面写的递归,实现比较简单。这里如果只用一句SQL查询,只能利用SQL变量做文章了。大致说下实现思路:

按parent_id从小到大遍历depts所有记录,不断拼接@all_path变量,遍历完之后,取最后一条记录,3,4,7,8,6,1,:,5,2,

很显然,上面每个根节点为0的都是分号分隔了,根据TG的id=1再次做一个字符串处理,得到1,3,4,7,8,6

最后联合users表查询即可

SELECT

u.*

FROM

depts AS d,

users AS u,

(SELECT

depts_node

FROM

(SELECT

@auto_id:=@auto_id + 1 AS auto_id,

@all_path:=IF(parent_id = 0, CONCAT(@all_path, ':,', id, ','), REPLACE(@all_path, CONCAT(',', parent_id, ','), CONCAT(',', id, ',', parent_id, ','))) AS depts_node

FROM

depts, (SELECT @auto_id:=0, @all_path:='') vv

ORDER BY parent_id ASC) AS all_depts

ORDER BY auto_id DESC

LIMIT 0 , 1) AS f

WHERE

d.dept_name = 'TG'

AND FIND_IN_SET(u.dept_id,

CONCAT(d.id,

SUBSTRING_INDEX(SUBSTRING_INDEX(f.depts_node, CONCAT(',', d.id, ','), 1),

':',

- 1)))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值