iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql查询连续记录方式
  • 872
分享到

mysql查询连续记录方式

2024-04-02 19:04:59 872人浏览 独家记忆
摘要

目录案例解决思路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;

这里写图片描述

解决思路

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);

这里写图片描述

总结建议

  • Mysql的函数例如: GROUP_CONCAT() 的字符长度有限制(默认1024),如果连续记录较多会发生字符截取报错;
  • 建议可以分步骤去查询,防止嵌套子查询,还可以提升性能而且避免使用mysql函数;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

您可能感兴趣的文档:

--结束END--

本文标题: mysql查询连续记录方式

本文链接: https://www.lsjlt.com/news/148197.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql查询连续记录方式
    目录案例解决思路1.对满足初次查询的数据赋予一个自增列b2.用自增的id减去自增列b3.对等差列c分组, 并将分组的id组装起来4.根据组装的id去找数据总结建议案例 最近遇到一个业...
    99+
    2024-04-02
  • MySQL慢查询以及重构查询的方式记录
    前言 什么是慢查询,如何优化慢查询,下面介绍这两个知识点的相关知识。 慢查询基础:优化数据访问 是否向数据库请求了不需要的数据 查询不需要的记录:解决方案:查询后面加上Limit...
    99+
    2024-04-02
  • sqlserver中如何查询出连续日期记录
    sqlserver中如何查询出连续日期记录,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Insus.NET尝试写了程序并做了测试,可以得到...
    99+
    2024-04-02
  • SQL怎么查询连续上涨 N 次的记录
    小编今天带大家了解SQL怎么查询连续上涨 N 次的记录,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“SQL怎么查询连续上涨 N 次的...
    99+
    2023-06-03
  • mysql查询前20条记录的方法
    小编给大家分享一下mysql查询前20条记录的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql查询前20条记录的方法:执行【select * from no_primar...
    99+
    2024-04-02
  • MySQL怎么查询表记录
    这篇文章主要介绍“MySQL怎么查询表记录”,在日常操作中,相信很多人在MySQL怎么查询表记录问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL怎么查询表记录”的疑惑...
    99+
    2024-04-02
  • mybatis-plus返回查询总记录数方式
    目录mybatis-plus返回查询总记录数mybatis-plus分页查询,总条数为零的解决mybatis-plus返回查询总记录数 mp框架提供了selectCount...
    99+
    2024-04-02
  • mysql查询最新5条记录的方法
    小编给大家分享一下mysql查询最新5条记录的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql查询最新的5条记录的方...
    99+
    2024-04-02
  • SQL 查询连续登录的用户情况
    以连续3天为例,使用工具:MySQL。 1.创建SQL表: create table if not exists orde(id varchar(10),date da...
    99+
    2024-04-02
  • MySQL重复记录怎么查询
    可以使用GROUP BY和HAVING子句来查询MySQL中的重复记录。 假设有一张名为table1的表,其中包含一个名为c...
    99+
    2024-04-09
    MySQL
  • mysql怎么查询连续签到天数
    要查询连续签到天数,可以通过以下步骤来实现: 创建一个名为attendance的表,包含以下字段: id (int, 主键) ...
    99+
    2024-04-09
    mysql
  • 【Mysql】给查询记录增加序列号方法
    在MySQL 8.0版本中,你可以使用ROW_NUMBER()函数来添加序号。以下是一个示例查询,演示如何添加序号: SELECT ROW_NUMBER() OVER (ORDER B...
    99+
    2023-10-22
    mysql 数据库
  • MySQL的连接方式和多表查询方法
    本篇内容主要讲解“MySQL的连接方式和多表查询方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL的连接方式和多表查询方法”吧!目录MySQL 内连接、左连接、右连接、外连接、多表查询...
    99+
    2023-06-20
  • mysql如何查询最新的记录
    这篇文章将为大家详细讲解有关mysql如何查询最新的记录,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql查询最新的记录的方法:1、登录数据库;2、选择数据库;3、...
    99+
    2024-04-02
  • mysql如何查询前10条记录
    本篇内容主要讲解“mysql如何查询前10条记录”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql如何查询前10条记录”吧! ...
    99+
    2024-04-02
  • mysql能查询后10条记录吗
    mysql能查询后10条记录,其方法是:1、创建表并插入测试数据;2、执行查询;3、该查询将输出最后10个记录,按照id降序排列即可。本教程操作环境:windows10系统、mysql8.0.16版本、DELL G3电脑。MySQL是一种流...
    99+
    2023-07-25
  • SQL查询至少连续n天登录的用户
    以连续3天为例,使用工具:MySQL。 1.创建SQL表: create table if not exists orde(id varchar(10),date date...
    99+
    2024-04-02
  • SQL怎么查询连续登录的用户情况
    这篇文章主要为大家展示了“SQL怎么查询连续登录的用户情况”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQL怎么查询连续登录的用户情况”这篇文章吧。以连续3天为例,使用工具:MySQL。创建S...
    99+
    2023-06-22
  • mysql如何查询表中所有记录
    要查询MySQL表中的所有记录,可以使用SELECT语句。以下是查询语法:```SELECT * FROM table_na...
    99+
    2023-08-09
    mysql
  • win10使用记录的查询方法
    本篇文章为大家展示了win10使用记录的查询方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。win10使用记录查询方法:.点击开始菜单旁——任务试图图标。2、打开显示的是正在运行的程序——下滑可以...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作