目录案例解决思路1.对满足初次查询的数据赋予一个自增列b2.用自增的id减去自增列b3.对等差列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;
select id,type,content,(@b:=@b+1) as b from cdb_labels a,(SELECT @b := 0) tmp_b where type=1;
select id,type,content,( id-(@b:=@b+1) ) as c from cdb_labels a,(SELECT @b := 0) tmp_b where type=1;
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;
注:为了方便区分,这里查询分组成员要大于5(也就是连续出现超过5次的记录):
select if( count(id)>5 ,GROUP_CONCAT(id),null) e 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;
那么得到的数据只有:9,10,11,12,13,14,15
select id,type,content from cdb_labels,(
select if( count(id)>5 ,GROUP_CONCAT(id),null) e 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
) as f where f.e is not null and FIND_IN_SET(id , f.e);
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: mysql查询连续记录方式
本文链接: https://www.lsjlt.com/news/148197.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0