MySQL如何只取根据某列连续重复行的第一条记录

前言

MySQL如何只取根据某列连续重复行的第一条记录,条件:某列、连续、验重

建表准备

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test`  (
  `id` bigint NOT NULL,
  `time` datetime NULL DEFAULT NULL,
  `price` int NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

数据准备

在这里插入图片描述

方案

方案一:验重列组内分配排名&取排名第一个

SET @prev_value = NULL;
SET @rank = 0;

SELECT
  b.id,
  b.time,
  b.price 
FROM
  (
  SELECT
    a.id,
    a.time,
    a.price,
    @rank := IF ( @prev_value = a.price, @rank + 1, @rank := 0 ) AS order_num,
    @prev_value := a.price 
  FROM
    ( SELECT * FROM test ORDER BY id ) a 
  ) b 
WHERE
  b.order_num = 0;
  • @prev_value 用于存储验重列前一行的值。
  • @rank 用于给每个连续重复块内的每行分配一个排名。
    在这里插入图片描述
    ps: 此处 SELECT * FROM test ORDER BY id 根据id排序,可根据实际情况调整也可删除,加上最后的 WHERE b.order_num = 0 后就是取第一条数据;

方案二:验重列分组序号&组内取第一个

SET @prev_value = NULL;
SET @group_id = 0;
    
SELECT
  a.id,
  a.time,
  a.price 
FROM
  test a
  INNER JOIN ( 
    SELECT 
      MIN( b.id ) AS min_id 
    FROM
    (
    SELECT
      d.id,
      d.time,
      d.price,
      @group_id := IF( @prev_value = d.price, @group_id, @group_id + 1 ) AS group_id,
      @prev_value := d.price 
    FROM
      ( SELECT * FROM test ORDER BY id ) d
    ) AS b 
  GROUP BY
  b.group_id 
  ) AS c ON a.id = c.min_id;
  • @prev_value 用于存储验重列前一行的值。
  • @group_id 用于给每个连续重复块分配一个组号。
    在这里插入图片描述
    ps: 此处 SELECT * FROM test ORDER BY id 根据id排序,可根据实际情况调整也可删除,每组数据分配一个组号,然后再根据组号分组取第一条数据;
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943643.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图文教程:使用PowerDesigner导出数据库表结构为Word/Html文档

1、第一种情况-无数据库表,但有数据模型 1.1 使用PowerDesigner已完成数据建模 您已经使用PowerDesigner完成数据库建模,如下图: 1.2 Report配置和导出 1、点击:Report->Reports,如下图: 2、点击&…

AI三驾马车——数据、算法与算力的一体化融合体验

一、概述 随着AI大模型、云计算和大数据技术的快速发展,智能算力市场需求持续增长。今年7月由国家信息中心发布的《智能算力产业发展白皮书》指出,随着AI大模型等关键技术取得突破,算力需求正从通用计算转向智能计算。智能计算是指面向人工智…

Vue 3 与 Tauri 集成开发跨端APP

1、安装RUST 下载地址:Install Rust - Rust Programming Language 安装: 安装完成后,在命令行里运行: rustup 2、安装 Node.js 与 npm 或 pnpm ,如果已经安装,可以忽略 # 使用 nvm 安装 Node.js 最新版本 nvm install…

指针详解之 多层嵌套的关系

1 例子之指向3个字符串的指针数组,易混淆! 1.1过程详解: char *str[3]{ "Hello,thisisasample!", "Hi,goodmorning.", "Helloworld" }; char s[80]; strcpy(s,str[0]); //也可写成strcpy(s,*st…

Keras2.0 ImageDataGenerator 适配

最近在学习keras,总遇到使用 ImageDataGenerator当作训练参数,使用 fit_generator(), 而 Keras 2.0 已经放弃了,导致执行不下去了 经过N多天的摸索,终于是成功了 # 训练集数据生成 datagen ImageDataGenerator(rotation_range40,rescale…

循环神经网络(RNN)入门指南:从原理到实践

目录 1. 循环神经网络的基本概念 2. 简单循环网络及其应用 3. 参数学习与优化 4. 基于门控的循环神经网络 4.1 长短期记忆网络(LSTM) 4.1.1 LSTM的核心组件: 4.2 门控循环单元(GRU) 5 实际应用中的优化技巧 5…

低代码开源项目Joget的研究——Joget8社区版安装部署

大纲 环境准备安装必要软件配置Java配置JAVA_HOME配置Java软链安装三方库 获取源码配置MySql数据库创建用户创建数据库导入初始数据 配置数据库连接配置sessionFactory(非必须,如果后续保存再配置)编译下载tomcat启动下载aspectjweaver移动jw…

赋能开发者 | 麒麟信安受邀参加2024开放原子开发者大会,以技术为引领,以人才创发展

12月20至21日,以“一切为了开发者”为主题的“2024开放原子开发者大会暨首届开源技术学术大会”在湖北武汉举办。本届大会由开放原子开源基金会、中国通信学会联合主办,旨在贯彻落实国家软件发展战略,加速培育壮大我国开源生态。工业和信息化…

HTML5实现好看的喜庆圣诞节网站源码

HTML5实现好看的喜庆圣诞节网站源码 前言一、设计来源1.1 主界面1.2 圣诞介绍界面1.3 圣诞象征界面1.4 圣诞活动界面1.5 圣诞热度界面1.6 圣诞纪念界面1.7 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的喜庆圣诞节网站源码,圣…

1.微服务灰度发布落地实践(方案设计)

前言 微服务架构中的灰度发布(也称为金丝雀发布或渐进式发布)是一种在不影响现有用户的情况下,逐步将新版本的服务部署到生产环境的策略。通过灰度发布,你可以先将新版本的服务暴露给一小部分用户或特定的流量,观察其…

Vue中动态样式绑定+CSS变量实现切换明暗主题功能——从入门到进阶

1.直接借助Vue的动态绑定样式绑定 Vue动态样式绑定 在Vue中,动态样式绑定是一种强大的功能,它允许开发者根据数据的变化动态地更新元素的样式。以下是对Vue动态样式绑定的详细知识梳理与详解: 一、基础知识 Vue的动态样式绑定主要通过v-b…

华为管理变革之道:奋斗文化与活力

目录 企业文化是什么? 为什么活下去是华为的文化? 活下来,是华为公司的最低纲领,也是华为公司的最高纲领! 资源终会枯竭,唯有文化才能生生不息 企业文化之一:以客户为中心 企业文化之二&a…

强化数据治理能力,夯实数字政府建设基石!

当下,数字政府建设已成为推动国家治理体系和治理能力现代化的关键路径。数据作为数字化时代的关键生产要素,直接影响着数字政府建设的能效,关系着政府决策的科学性、公共服务的精准性以及社会治理的有效性。因此,通过数据治理来全…

NFC 碰一碰发视频源码搭建技术详解,支持OEM

一、引言 NFC(Near Field Communication)近场通信技术以其便捷性和安全性在现代移动应用中得到了广泛应用。结合视频播放功能,实现 NFC 碰一碰发视频的应用场景,能够为用户带来全新的交互体验,例如在商场的产品推广、景…

【论文阅读】AllMatch: Exploiting All Unlabeled Data for Semi-Supervised Learning

一、引言 在当今的机器学习领域,半监督学习(SSL)作为一种重要的学习范式,受到了广泛的关注。它旨在利用有限的标记数据和大量的未标记数据来提升模型的性能,从而在数据标记成本较高而未标记数据丰富的情况下发挥重要作…

光谱相机与普通相机的区别

一、成像目的 普通相机:主要目的是记录物体的外观形态,生成人眼可见的、直观的二维图像,重点在于还原物体的形状、颜色和纹理等视觉特征,以供人们进行观赏、记录场景或人物等用途。例如,拍摄旅游风景照片、人物肖像等…

基于单片机的蓄电池内阻检测系统设计(论文+源码)

1 系统的功能及方案设计 在本次设计中,考虑到整体设计难度。在此选择了上述的方法一来作为本次蓄电池内阻检测的方案。其系统整个框图如下图1所示。其主要的核心控制模块由LCD显示模块,负载电路模块,AD模数转换模块,继电器控制模…

Git核心概念

版本控制 什么是版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 除了项目源代码,你可以对任何类型的文件进行版本控制。 为什么要版本控制 有了它你就可以将某个文件回溯到之前的状态,甚至将整…

Kotlin 协程基础知识总结二 —— 启动与取消

协程启动与取消的主要内容: 启动协程:启动构建器、启动模式、作用域构建器、Job 生命周期取消协程:协程的取消、CPU 密集型任务取消、协程取消的副作用、超时任务 1、协程构建器 (P20)launch 与 aysnc 两种协程构建…

kong网关使用pre-function插件,改写接口的返回数据

一、背景 kong作为api网关,除了反向代理后端服务外,还可对接口进行预处理。 比如本文提及的一个小功能,根据http header某个字段的值,等于多少的时候,返回一个固定的报文。 使用到的kong插件是pre-function。 除了上…