【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; / ...
随机推荐
- C++笔记(13)数组的引用和引用的数组
数组的引用 数组有二个特性,影响作用在数组上的函数:一是不能复制数组,二是使用数组名时, 数组名会自动指向其第一个元素的指针. 因为不能复制,所以无法编写使用数组类型的形参,数组会自动转化为指针.比如 ...
- [SWPUCTF 2021 新生赛]easy_sql
这道题呢就是很简单的sql注入,我们直接用sqlmap来跑. 首先我们打开页面可以看见提示,参数为wllm **然后我们启动虚拟机,输入sqlmap的命令:sqlmap -u "url地址/ ...
- kettle从入门到精通 第二十一课 kettle Carte服务器
1.相关配置文件 jdbc.properties保存在simple-jndi目录下,这个文件用来存储JNDI连接对象的连接参数.Kettle可以用JNDI的方式来引用JDBC连接参数,如IP地址.用户 ...
- 在线Token、随机密码生成工具
在线生成自定义长度,包含大写或小写字母.数字或符号的随机字符串.无论你需要生成API访问令牌.账户激活令牌,还是随机密码字符串,它都能帮你快速完成. 在线Token.随机密码生成工具
- OOM异常的4种可能分析及常见的OOM异常演示
OOM异常的4种可能分析及常见的OOM异常演示 OOM异常: OutOfMemoryError 1.JAVA堆溢出JAVA堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到这些对象之间 ...
- CloseableHttpClient设置超时时间demo 未设置默认是2分钟
# CloseableHttpClient设置超时时间demo 未设置默认是2分钟 import org.apache.http.HttpHeaders; import org.apache.http ...
- 正式开启全站HTTPS加密之旅
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 正式开启全站HTTPS加密之旅 日期:2017-7-14 ...
- 修改Git Commit提交记录的用户名Name和邮箱Email
修改Git 本次Commit提交记录的用户名Name和邮箱Email git commit --amend --author="new-name <xxx@new.com>&qu ...
- Linux 环境编程:errno的基本用法
背景 error是一个包含在<errno.h>中的预定义的外部int变量,用于表示最近一个函数调用是否产生了错误.若为0,则无错误,其它值均表示一类错误. errno只在函数返回错误时才有 ...
- OpenBMB × Hugging Face × THUNLP,联袂献上经典大模型课
这个夏天,THUNLP 携手 Hugging Face 和 OpenBMB,推出 大模型公开课第二季.在大模型公开课第二季中,将有全球知名开源社区 OpenBMB X Hugging Face 梦幻联 ...