mysql树编码查询为梯形的sql

本文探讨了如何使用SQL中的GROUP BY和GROUP_CONCAT函数进行数据聚合,特别是针对不同长度的代码进行分类。通过案例展示了如何将一个表格的代码与另一个表格进行部分匹配,并利用LENGTH和CASE WHEN进行条件判断,分别获取一级、二级和三级分类。这种方法在数据整理和分析中非常实用。
摘要由CSDN通过智能技术生成

主要是用GROUP BY 加上GROUP_CONCAT函数来实现的
sql为:select a.majortree_code, GROUP_CONCAT(b.majortree_code) r1, GROUP_CONCAT(LENGTH(b.majortree_code)) r2, b.majortree_code, GROUP_CONCAT(case LENGTH(b.majortree_code) when 3 then b.majortree_code else null end) a1, GROUP_CONCAT(case LENGTH(b.majortree_code) when 6 then b.majortree_code else null end) b2, GROUP_CONCAT(case LENGTH(b.majortree_code) when 9 then b.majortree_code else null end) c3 FROM zj_bdexpertmajor a JOIN zj_bdexpertmajor b on a.majortree_code like CONCAT(b.majortree_code,'%') GROUP BY a.majortree_code ORDER BY a.majortree_code
下面是查出来的数据 如果需要显示名称就b.name
在这里插入图片描述
JOIN zj_bdexpertmajor b on a.majortree_code like CONCAT(b.majortree_code,‘%’)
这段sql的意思是 把a表的code 跟全表的b.code比较 有满足的就拿出来
如果a表的code是 001003001 b表就会 001003001like 001 满足 001003也满足 001003001也满足 这样b表就有了三条数据 然后用LENGTH() 函数把字符值变为字符的长度值再用GROUP_CONCAT 把所有的字符的长度值拿出来就变成了在这里插入图片描述
然后再用case when 判断字符长度3为一级 6为2级
核心就是group by
如果不用length和 case when的话就是这样的数据在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值