mysql查询连续记录

MYSQL中找出不连续记录的SQL 在MySQL中,找出不连续记录通常涉及对具有某种连续性特征的数据进行分析,比如连续的数值序列、时间序列等。 阅读详情

案例:

最近遇到一个业务需求, 需要查找满足条件且连续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;

这里写图片描述

注:为了方便区分,这里查询分组成员要大于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);

这里写图片描述

总结建议:

  1. MySQL的函数例如: GROUP_CONCAT() 的字符长度有限制(默认1024),如果连续记录较多会发生字符截取报错;
  2. 建议可以分步骤去查询,防止嵌套子查询,还可以提升性能而且避免使用MySQL函数;
MySQL查找连续出现的数字(少数) 0x01.需求 编写一个 SQL 查询,查找所有至少连续出现三次的数字。 +----+-----+ | Id | Num | +----+-----+ | 1 | 1 | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 1 | | 6 | 2 | | 7 | 2 | +----+-----+ 例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。 +-----------------+ | ConsecutiveNums | +-----------------+ | 1 | +--- 立即下载

相关推荐

Github多人协作

最近有门课程需要几个人一起开发一个项目,此前我们基本都是单干的,多人合作意味着需要及时将我们每个人的代码进行合并,U盘传文件这种方式太慢了,效率不行,而且没法解决两个人同时修改一个文件的问题,这次我们就尝试使用Github来协助开发。下面就来记录一下这次开发遇到的一些问题和解决的方法。 Git的安装 从官网下载最新版按照默认安装即可。 此处不多加说明。 Git常用命令 在此放上一...

yzr1216的博客 1万+

MySQL5.7实现连续登陆天数计算

目前有个登陆记录表名为test,编写一个SQL,求出某个name距离今天连续登陆时间是几天?

Sajor的博客 989

手把手教你为RK3588开发板适配RTL8211F网卡:设备树配置与PHY驱动匹配全流程

本文详细介绍了在RK3588开发板上适配RTL8211F千兆以太网PHY芯片的全流程,包括硬件原理图确认、设备树配置与PHY驱动匹配。通过实战案例和调试技巧,帮助开发者解决常见问题并优化网络性能,适用于嵌入式Linux开发中的Ethernet网络功能实现。

weixin_29184075的博客 527

MySQL查询满足条件的连续时间段数据

文章转自《MySQL查询满足条件的连续时间段》,主要涉及mysql变量的使用 建表: CREATE TABLE `stadium` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `visit_date` DATE NOT NULL, `people` INT(32) NOT NULL, PRIMARY KEY (`id`) ) 数据: 方法一: -- 查询连续至少3天游客数目大于700的数据; SET @startdate = CAST(

meser88的博客 2346

Oracle Primavera P6实战手册:从入门到精通的企业项目管理秘籍

本文详细介绍了Oracle Primavera P6在企业项目管理中的实战应用,从环境配置到高级进度控制技巧,帮助用户从入门到精通。通过WBS设计、资源优化和情景模拟等核心功能,提升项目管理效率。特别适合需要处理复杂项目和多团队协作的企业用户。

weixin_29235923的博客 254

SVG文件上传漏洞实战:从XSS攻击到防御策略

本文深入剖析了SVG文件上传漏洞的成因与危害,揭示了攻击者如何利用SVG的XML本质构造恶意文件,绕过常规检查实现存储型XSS攻击。文章通过实战复现演示了完整的攻击链,并提供了从严格内容检查、安全解析过滤到设置CSP策略等多层次的纵深防御方案,帮助开发者从根本上加固文件上传功能。

weixin_29230805的博客 397

mysql的带多个条件的查询

环境:mysql 5.7 当一个where语句中同时出现多个and 或者or时,需要将多个OR用小括号括起来再和AND进行“与”,或者将多个AND用小括号括起来再与OR进行“或” ...

qq_28078033的博客 2万+

PAM4信号测试实战:从眼图分析到误码率测量的技术演进

在高速数字系统设计中,信号完整性测试是确保数据传输可靠性的核心环节。其基本原理在于通过时域和频域分析,精确评估信号在传输过程中的质量衰减与失真。随着数据速率向56Gbps及以上演进,传统的NRZ编码面临带宽瓶颈,而PAM4调制技术通过在每个符号周期内承载更多比特信息,成为提升信道效率的关键路径。这项技术的工程价值在于,它允许在相同带宽下实现翻倍的数据吞吐量,这对于数据中心互联、PCIe 6.0及800G以太网等高速接口至关重要。然而,PAM4信号电平间距更小,对噪声和抖动极为敏感,导致其原始误码率显著升高,

weixin_42522817的博客 657

Mysql查询字符串中某个字符串出现的次数

首先mysql并没有直接计算出现字符次数的函数,所以才使用了下面这种方式,其实就是将出现的字符串给替换为了空。然后让原数据减去替换过后的得出来的长度就是出现的次数,一个字符的长度就是1。现在有个问题,相除之后查出来了好多小数位,我们可以通过如下方式进行去掉。

怪咖@的博客 1万+

前沿数据解析 | 麻省理工-斯坦福-丰田研究中心电池数据集:AI驱动下的电池寿命早期预测

本文解析了麻省理工、斯坦福与丰田研究中心联合发布的电池数据集,展示了AI驱动下的电池寿命早期预测技术。通过分析124个商用锂离子电池的完整生命周期数据,研究团队仅用前100次循环数据即可准确预测电池报废时间,为电动汽车电池管理提供革命性解决方案。数据集包含LFP/石墨体系电池的详细测试记录,结合差分容量分析和梯度提升树模型,预测精度显著提升。

weixin_26950847的博客 530

VirtualBox增强功能安装全指南:从下载到配置复制粘贴功能

本文详细介绍了VirtualBox增强功能的完整安装与配置流程,重点解决了虚拟机与主机间复制粘贴、文件拖放等核心协作难题。通过分步指南和故障排查,帮助用户在不同操作系统(如Windows、Linux)中实现无缝集成,提升虚拟化工作效率与体验。

weixin_29206669的博客 419

mysql查询连续天数数据

连续天数查询

奔跑的菜鸡 2325

swl安装无法与服务器建立链接,如何解决?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 2077

mysql 查询连续的记录_mysql 连续记录查询?

请教一条mysql查询语句,请大家帮助!谢谢。假设我现在有如下数据:id机种生产时间1A2020-1-408:00:003A2020-1-408:00:015A2020-1-408:00:026A2020-1-408:00:039B2020-1-408:00:0411B...请教一条mysql查询语句,请大家帮助!谢谢。假设我现在有如下数据:id 机种 生产时间1 A 20...

weixin_39624606的博客 447

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mysql实战:不连续日期记录要求按照连续日期进行查询展示

经常会遇到关于日期的统计问题,很多时候数据记录的日期是不连续的,但是实际的业务场景要求按照连续的日期查询出数据记录信息.如果还不是很清楚这问题场景,现在简单设定一个数据查询场景:现在有一个资金收入表,会按照一定时间记录一下当天的收入信息,如果当天没有收入就不会新增记录.现在要求以周为单位,查询当年每周的收入记录总和,指定周没有记录信息的记为0但是要显示周信息. 表结构以及测试数据: 展示数据如下: 此类问题一般有两种处理方式,最简单的就是建立关于日期的实体表,可以按照一年52个周填充

weixin_43401380的博客 1073

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

一个查询不连续数字记录的问题整体思路_MySQL查询连续打卡信息?

导读:最近多次看到用SQL查询连续打卡信息问题,自己也实践一波。抛开问题本身,也是对MySQL窗口函数和自定义变量用法的一种练习。00 建表所用数据库为MySQL8.0,简单而不失一般性,建立一个仅有记录id、用户id、日期和打卡标记共4个字段的数据表。建表语句为:CREATE TABLE `testd` ( `id` int NOT NULL AUTO_INCREMENT, `use...

weixin_31934101的博客 517

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Leetcode-mysql连续多行自记录查询

题目: X 市建了一个新的体育馆,每日人流量信息被记录在这三列信息中:序号 (id)、日期 (visit_date)、 人流量 (people)。 请编写一个查询语句,找出人流量的高峰期。高峰期时,至少连续三行记录中的人流量不少于100。 按照题目要求, 我用sql建表导入数据: drop table if exists stadium; create table stadium(id int(1...

qq_43149023的博客 398

mysql 查询连续的记录_sqlserver中如何查询出连续日期记录的代码

Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用。有在论坛上看到一帖,《》,截图如下:Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用。代码如下:--创建一个临时表,将会存储连续日期的记录CREATE TABLE #temp (IDD VARCHAR(10),SDATE DATETIME)DECLARE @sD DAT...

weixin_34693167的博客 432

mysql 连续查询数据库_MySQL查询连续数据

查询连续记录并对这些连续数据统计取出指定连续次数的记录,这类操作并不多,但出现时会比较棘手。查询思想是:顺序行号 - 减首差值 = 连续差块顺序行号 如同 Oracle 中的 rownum 但MySQL目前还没有这个功能,所以只能通过局部变量来实现,减首差值 就是每条记录与最开始记录的差(需要保证这个差值与顺序行号递增值相同,当然如果本来就是自增值则不需要单独计算)只要 顺序行号与减首差值保持相同...

weixin_39735012的博客 1096

mysql查询连续3个月以上_MySQL:连续几个月的记录数

我一直在寻找这个,但所有类似的问题和答案都是不同的,不起作用.我有一个包含以下字段的表:person,thing,purdate.当一个人购买每件新东西时输入一条新记录.我想计算一个人买了任何“东西”的连续月份(thing01或者thing02,它不会).如果连续的purdays中断,那么计数应该重新开始.随附数据,我想最终得到:| Person | Consec Days || pers...

weixin_29050829的博客 2335

mysql 查询连续_MySQL查询显示连续的结果

mysql中 对于查询结果只显示n条连续行的问题#在领扣上碰到的一个题目:求满足条件的连续3行结果的显示X city built a new stadium, each day many people visit it and the stats are saved as these columns: id, date, people;Please write a query to display...

weixin_39616056的博客 216

mysql删除记录后id不连续_MySQL查询性能优化

1.为什么查询速度会慢?首先对一个查询的生命周期简化分析,大致可以按照顺序分为:从客户端、到服务器、然后在服务器进行解析、生成执行计划、执行、并返回结果给客户端。其中的执行可以被认为是查询的生命周期中最重要的部分,执行主要包括了大量为了检索数据到存储引擎的调用以及调用后数据的排序、分组等处理。在完成生命周期的这些任务的时候,查询需要在不用的地方消耗时间,包括网络、CPU计算、生成执行计...

weixin_42502060的博客 709

mysql中的连续数据_Mysql查询连续数据

查询连续记录并对这些连续数据统计取出指定连续次数的记录,这类操作并不多,但出现时会比较棘手。查询思想是:顺序行号 - 减首差值 = 连续差块顺序行号 如同 oracle 中的 rownum 但mysql目前还没有这个功能,所以只能通过局部变量来实现,减首差值 就是每条记录与最开始记录的差(需要保证这个差值与顺序行号递增值相同,当然如果本来就是自增值则不需要单独计算)只要 顺序行号与减首差值保持相同...

weixin_39975261的博客 941

Mysql查询连续数据

查询连续记录并对这些连续数据统计取出指定连续次数的记录,这类操作并不多,但出现时会比较棘手。查询思想是:顺序行号 - 减首差值 = 连续差块顺序行号 如同 oracle 中的 rownum 但mysql目前还没有这个功能,所以只能通过局部变量来实现,减首差值 就是每条记录与最开始记录的差(需要保证这个差值与顺序行号递增值相同,当然如果本来就是自增值则不需要单独计算)只要 顺...

weixin_33749242的博客 3053

Mysql 查询人数大于或等于 100 且 id 连续的三行或更多行记录。

链接:https://leetcode.cn/problems/human-traffic-of-stadium。每日人流量信息被记录在这三列信息中:序号 (id)、日期 (visit_date)、 人流量 (people)编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。商业转载请联系官方授权,非商业转载请注明出处。返回按 visit_date 升序排列 的结果表。每天只有一行记录,日期随着 id 的增加而增加。visit_date 是表的主键。

日常博客 2254

mysql order 随机,mysql 随机获取记录 order by rand 优化

mysql 随机获取记录 order by rand 优化如果要随机获取记录数,在mysql里最简单的方法肯定是orderbyrand()了,但是这种方法只能在表记录极少的情况下才能使用。主要是因为orderbyrand()导致了using filesort.这个时候查询类型会变成all,索引会失效。只需简单的变通下,完成可以做到同样的效果。根据记录的类型,分类连续和非连续两种。连续指记录是连续存...

weixin_34142444的博客 445
上一篇: FastCgi与php-fpm
下一篇: 移动端web开发总结(自适应)
小Z笔记
博客等级 码龄9年 11粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值