MySQL算法案例1

在这里插入图片描述
建表:

create table test_tb(
    id int,
    name string
);

导入数据:

insert into test_tb values (1,'/'),(2,'A'),(3,'B'),
                           (4,'C'),(5,'/'),(6,'D'),
                           (7,'E'),(8,'/'),(9,'F'),
                           (10,'G'),(11,'H');

方法1:

select t1.id,t1.name,count(1) cnt
from test_db.test_tb t1
left join test_db.test_tb t2 on t1.id > t2.id and t2.name = '/'
where t1.name != '/'
group by t1.id,t1.name;

方法2:

with t1 as (select id,name,count(`if`(name='/',1,null)) over (order by id) cnt
from test_tb)
select id, name, t1.cnt
from  t1
where t1.name!='/';

方法3:

select *
from (
         select id, name,
                if(name = '/',@cn := @cn + 1,@cn) cnt
         from test_tb,(select @cn := 0) q
         ) t
where name != '/';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值