注:为了方便区分,这里查询分组成员要大于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
4.根据组装的id去找数据
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);
总结建议
- MySQL的函数例如: GROUP_CONCAT() 的字符长度有限制(默认1024),如果连续记录较多会发生字符截取报错;
- 建议可以分步骤去查询,防止嵌套子查询,还可以提升性能而且避免使用MySQL函数;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
更多相关Mysql内容来自木庄网络博客
标签:Mysql
相关阅读 >>
关于mysql搭建亿级cmd5数据库,毫秒级查询(完整过程)
更多相关阅读请进入《mysql》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。