【MySQL】 将字段相同的记录排在一起,按时间倒序
一、实现效果:
蓝牙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】 将字段相同的记录排在一起,按时间倒序的更多相关文章
- MySQL 将某个字段值的记录排在最后,其余记录单独排序
1.按 status 值 2 5 3 的顺序排序,值相同则按修改时间排序 order by FIELD(status,2,5,3),a.ModifyTime desc 2.将 status = 3 的 ...
- Mysql 拼接字段查询语句和join查询拼接和时间查询
个人平时记录的,有点乱 1.修改时间字段,如果时间字段的类型是date或者是datetime类型的 update 表名 set 时间字段 = DATE_FORMAT(NOW(),'%Y-%m-%d % ...
- mysql text字段判断是否为空
mysql text字段判断是否为空 mysql text字段为空select * from `tableName` where `textField` is null or `textField` ...
- 修改MySQL中字段的类型和长度
MySQL修改字段类型的命令是: mysql> alter table 表名 modify column 字段名 类型; 假设在MySQL中有一个表为:address,有一个字段为city 初始 ...
- MySQL添加字段和删除字段
MySQL添加字段应该如何实现呢?这是很多刚刚接触MySQL数据库的新人都提到过的问题,下面就为您介绍MySQL添加字段和删除字段的方法,希望对您能有所启迪. MySQL添加字段: alter tab ...
- PDO 查询mysql返回字段整型变为String型解决方法
PDO 查询mysql返回字段整型变为String型解决方法 使用PDO查询mysql数据库时,执行prepare,execute后,返回的字段数据全都变为字符型. 例如id在数据库中是Int的,查询 ...
- mysql 修改字段长度
mysql 修改字段长度 alter table news modify column title varchar(130); alter table 表名 modify column 字段名 类型 ...
- mysql修改字段的语句写法
http://www.111cn.net/database/mysql/50678.htm 下面为您介绍的sql语句都是mysql修改字段操作中的一些常用语句,如果您是一个刚刚接触mysql数据库的新 ...
- MySql 查询表字段数
MySql 查询表字段数 SELECT COUNT(*) FROM information_schema.columns WHERE table_schema='test_cases' AND tab ...
- MySql增加字段、删除字段、修改字段
MySql增加字段.删除字段.修改字段名称.修改字段类型 1.增加一个字段 alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; / ...
随机推荐
- 2024 Web 新特性 - 使用 Popover API 创建弹窗
Popover API 为开发者提供了一种声明式的方式来创建各种类型的弹窗.目前已在所有三大浏览器引擎中可用,并正式成为 Baseline 2024 的一部分. 一直以来,我们在实现弹出式菜单.提示框 ...
- Adobe软件资源 PS PR AE等等
整理了一波Adobe软件,19年20年21年Mac版本的都有,关注Rand_cs即可领取
- SRE心里话:要求100%服务可用性就是老板的无知
<SRE Google 运维解密>第3章讲了拥抱风险,一些关键的观点,在这里与大家分享,融入了我自己的一些理解,希望对你有些帮助. 服务可用性必须100%?其实完全没必要 一个服务客户的产 ...
- GlaDS缘起
题目:Modeling channelized and distributed subglacial drainage in two dimensions 近年来,冰盖表面融化与冰盖动态之间的联 ...
- JavaScript通过递归实现深拷贝
思路 首先是用Object.prototype.toString.call(obj)来得到传入的值的类型,如果是几个基本类型,则直接返回值就可以了 如果是引用类型,则通过深拷贝函数递归进行再次拷贝. ...
- Vue聊天框自动滚动底部
原理:通过监听数据更新,将滚动的最大高度赋值给滚动条的最大高度,并等待页面更新完成后再将页面滚动到底部. 容器代码 watch监听 scrollTop: 距离最顶部高度 scrollHeight:滚动 ...
- C# .net core中如何将多张png图片合并成一个gif
背景 我们有很多这样的序列帧: 我这边要把这些序列帧裁切最后合并成gif,以下是我裁切后的png文件: 我一开始选用的是 SixLabors.ImageSharp 这是裁切代码: using var ...
- Jenkins项目构建成功后,配置邮件
6.1 配置信息 6.1.1 发给多个收件人 邮件要发送给多个人,要使用[,]分割 6.1.2. 项目构建引用Editable Email Notification,设置tigger 在项目构建后,引 ...
- mysql5.7msi安装
本文介绍的是只安装MySQL数据库的过程,并不包含各种其他附加工具.安装完成之后通常使用Navicat或SQLyog进行可视化操作. 清华的镜像网站只保存最新的几个MySQL版本,所以直链可能已经失效 ...
- Kubernetes(七)数据存储
数据存储 容器的生命周期可能很短,会被频繁地创建和销毁.容器在销毁时,保存在容器中的数据也会被清除.这种结果对用户来说,在某些情况下是不乐意看到的.为了持久化保存容器的数据,kubernetes引入了 ...