本文整理自网络,侵删。
目录
- 案例
- 解决思路
- 1.对满足初次查询的数据赋予一个自增列b
- 2.用自增的id减去自增列b
- 3.对等差列c分组, 并将分组的id组装起来
- 4.根据组装的id去找数据
- 总结建议
案例
最近遇到一个业务需求, 需要查找满足条件且连续3出现条以上的记录。
表结构:
CREATE TABLE `cdb_labels` ( ? `id` int(10) unsigned NOT NULL AUTO_INCREMENT, ? `type` int(11) NOT NULL DEFAULT '0' COMMENT '标签类型:1喜欢异性类型,2擅长话题', ? `content` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL COMMENT '标签内容', ? PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8 COMMENT='标签内容';
所有数据:
SELECT * FROM cdb_labels WHERE type = 1;
解决思路
1.对满足初次查询的数据赋予一个自增列b
select id,type,content,(@b:=@b+1) as b from cdb_labels a,(SELECT @b := 0) tmp_b where type=1;
2.用自增的id减去自增列b
select id,type,content,( id-(@b:=@b+1) ) as c from cdb_labels a,(SELECT @b := 0) tmp_b where type=1;
3.对等差列c分组, 并将分组的id组装起来
select count(id),GROUP_CONCAT(id) from ( select id,( id-(@b:=@b+1) ) as c from cdb_labels a,(SELECT @b := 0) tmp_b where type=1 ) as d GROUP BY c;
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » mysql查询连续记录方式
标签:mysql
相关推荐
评论
管理员已关闭评论功能...