利用Mysql提供的字符串方法查找字符串中某字符出现的次数

本文介绍了一种使用MySQL查询没有子分类的一级分类的方法。通过结合使用length和replace函数统计层级关系,避免了复杂的递归查询,提高了查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有这么一个需求,查出分类中没有子分类的一级分类,脑海中首次出现的解决思路和这样的

  1. 先使用PHP查出所有的一级分类
  2. 递归查询一级分类是否有子分类
  3. 将没有子分类的一级分类汇总

但觉的这样处理太麻烦了,然后转而在数据库层面上想办法,最后利用Mysql提供的replace、length方法完美解决
 
select name,term_id,parent,path from terms
where status = 1 and  parent = 0  --仅一级分类
--过滤掉没有子分类的分类
--length(path)-length(replace(path,'-','')) 统计path列字符串中’-‘出现的次数
--大于1表明至少有两个父分类
and  term_id not in(select parent from terms where length(path)-length(replace(path,'-',''))>1) order by listorder asc,term_id asc
 
 
 
参考:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值