一、实现效果:

蓝牙mac字段是相同的记录,排在一起,再按时间倒序,总体时间来说也需要倒序

二、SQL编写:

最开始的想法就是,那我直接按mac和时间排序不就好了

SELECT * FROM aca_be_lpresult ORDER BY mac DESC, update_date DESC

但是实际业务会有这样的的情况

1、同一个mac的记录,可能出现在不同的时间点

2、同一个时间点,可能有不同的mac记录

所以结果如下,两边都会出现乱序

同事提出为什么不先分组再排序呢,在认真解读这句话之后,我尝试看看

实现思路:

先写一个分组的SQL,按Mac分组,时间最大的排在前面,因为Mac是多个的,所以被分组的时间就取最大的即可

SELECT mac, COUNT( 1 ) AS count, MAX( update_date ) AS latest_date
FROM aca_be_lpresult
GROUP BY mac
ORDER BY MAX( update_date ) DESC

结果如下:

将这个分组的结果和主表进行相联:

SELECT a.* FROM aca_be_lpresult AS a
JOIN (
SELECT mac, COUNT( 1 ), MAX( update_date ) AS ud
FROM aca_be_lpresult
GROUP BY mac
ORDER BY MAX( update_date ) DESC
) AS b ON a.mac = b.mac

可以发现和直接查询主表没有任何差别 ...

此时我想起来可以先按分组表的顺序排序, 再按主表的顺序就实现了效果

最终SQL:

SELECT a.* FROM aca_be_lpresult AS a
JOIN (
SELECT mac, COUNT( 1 ), MAX( update_date ) AS ud
FROM aca_be_lpresult
GROUP BY mac
ORDER BY MAX( update_date ) DESC
) AS b ON a.mac = b.mac
ORDER BY b.ud DESC, a.update_date DESC

  

【MySQL】 将字段相同的记录排在一起,按时间倒序的更多相关文章

  1. MySQL 将某个字段值的记录排在最后,其余记录单独排序

    1.按 status 值 2 5 3 的顺序排序,值相同则按修改时间排序 order by FIELD(status,2,5,3),a.ModifyTime desc 2.将 status = 3 的 ...

  2. Mysql 拼接字段查询语句和join查询拼接和时间查询

    个人平时记录的,有点乱 1.修改时间字段,如果时间字段的类型是date或者是datetime类型的 update 表名 set 时间字段 = DATE_FORMAT(NOW(),'%Y-%m-%d % ...

  3. mysql text字段判断是否为空

    mysql text字段判断是否为空 mysql text字段为空select * from `tableName` where `textField` is null or `textField` ...

  4. 修改MySQL中字段的类型和长度

    MySQL修改字段类型的命令是: mysql> alter table 表名 modify column 字段名 类型; 假设在MySQL中有一个表为:address,有一个字段为city 初始 ...

  5. MySQL添加字段和删除字段

    MySQL添加字段应该如何实现呢?这是很多刚刚接触MySQL数据库的新人都提到过的问题,下面就为您介绍MySQL添加字段和删除字段的方法,希望对您能有所启迪. MySQL添加字段: alter tab ...

  6. PDO 查询mysql返回字段整型变为String型解决方法

    PDO 查询mysql返回字段整型变为String型解决方法 使用PDO查询mysql数据库时,执行prepare,execute后,返回的字段数据全都变为字符型. 例如id在数据库中是Int的,查询 ...

  7. mysql 修改字段长度

    mysql 修改字段长度 alter table news  modify column title varchar(130); alter table 表名 modify column 字段名 类型 ...

  8. mysql修改字段的语句写法

    http://www.111cn.net/database/mysql/50678.htm 下面为您介绍的sql语句都是mysql修改字段操作中的一些常用语句,如果您是一个刚刚接触mysql数据库的新 ...

  9. MySql 查询表字段数

    MySql 查询表字段数 SELECT COUNT(*) FROM information_schema.columns WHERE table_schema='test_cases' AND tab ...

  10. MySql增加字段、删除字段、修改字段

    MySql增加字段.删除字段.修改字段名称.修改字段类型   1.增加一个字段 alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; / ...

随机推荐

  1. itest(爱测试) 开源接口测试,敏捷测试管理平台10.0.1

    一:itest work 简介 itest work 开源敏捷测试管理,包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock,还有压测 ,又有丰富的统计分析,8合1工作站.可按 ...

  2. ABC317题解报告

    我直接从第三题开始讲了. T3 把数组 \(A\) 从大到小排序. 然后从前往后把前 \(q\) 个数加起来,然后判断这 \(q\) 个数的和与 \(d\) 的大小关系,如果大了就变成 \(d\). ...

  3. GO语言 GOLANG 上传微信电子小票图片

    GO语言 GOLANG 上传微信电子小票图片.GO HTTP POST 图片文件.GO 上传图片文件.multipart/form-data.image/jpeg.image/png. GO 环境: ...

  4. 解密Prompt系列31. LLM Agent之从经验中不断学习的智能体

    Agent智能体的工作流可以简单分成两种:一种是固定的静态工作流,一种是智能体自主决策的动态工作流. 静态流程的Agent举几个例子,例如新闻热点追踪推送Agent,每日新论文摘要总结Agent,它们 ...

  5. Python3.7+Robot Framework+RIDE1.7.4.1安装使用教程

    一.解惑:Robot Framewprk今天我们聊一聊,Robot Framework被众多测试工程师误会多年的秘密.今天我们一起来揭秘一下,最近经常在各大群里听到许多同行,在拿Robot Frame ...

  6. python批量读取excel csv文件插入mysql数据库

    #python批量读取excel csv文件插入mysql数据库 import os import csv import argparse import pymysql import sys clas ...

  7. gerrit权限控制

    gerrit权限控制 背景 在公司中使用到了Gerrit作为技术管理,在配置的时候发现一些问题:转载了这篇文章作为学习. 正文开始 原文链接:https://blog.csdn.net/chenjh2 ...

  8. 【规范】Git分支管理,看看我司是咋整的

    前言 缘由 Git分支管理好,走到哪里都是宝 事情起因: 最近翻看博客中小伙伴评论时,发现文章[规范]看看人家Git提交描述,那叫一个规矩一条回复: 本狗亲测在我司中使用规范的好处,遂把我司的Git分 ...

  9. test20230824总结

    A 怎么是重构树板子,放在图上都是水题. B 考场上只打了一个暴力,赛后发现似乎是很可做的 C 是一个考察状态设计的 dp 以后要多刷 D 是一道数据结构优化 dp 考场上写出来了却因为空间问题挂了 ...

  10. 两张图带你全面了解React状态管理库:zustand和jotai

    zustand 和 jotai 是当下比较流行的react状态管理库.其都有着轻量.方便使用,和react hooks能够很好的搭配,并且性能方面,对比React自身提供的context要好得多,因此 ...