首页 > 数据库 >【MySQL】 将字段相同的记录排在一起,按时间倒序

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

时间:2023-10-08 20:55:43浏览次数:44  
标签:记录 MAX update mac MySQL date 倒序 SELECT DESC

一、实现效果:

蓝牙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

  

 

标签:记录,MAX,update,mac,MySQL,date,倒序,SELECT,DESC
From: https://www.cnblogs.com/mindzone/p/17749725.html

相关文章

  • linux学习记录 10.8
    acterminal分配了如下信息:(1)user用户名  (2)hostnameip地址(3)password密码homework4getinfo查看上述信息 知识点:1、ssh登录到某个自己的服务器sshuser@hostname=登录服务器 exit/logout/ctrl+d=退出退出后进入.ssh看到一个known_hosts就会记录刚......
  • iaas运维笔记记录
    iaas运维笔记记录镜像创建source/etc/keystone/admin-openrc.sh(挂载用户配置文件)glanceimage-create--name"cirros"--disk-formatqcow2--container-formatbare<cirros-0.5.2-x86_64-disk.qcow2--name:创建后的镜像名称--disk-format:镜像格式--contrainer-form......
  • 【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A+建材识别装置+CUG汪汪小分队+问题记
    【玄铁杯第三届RISC-V应用创新大赛】LicheePi4A+建材识别装置+CUG汪汪小分队+opencv问题记录一、开发板环境搭建1.1开发板外观图1开发板带铝合金外壳外部图图2开发板带铝合金外壳内部图在yolox模型部署好后,在虚拟环境中调用opencv的imshow等图形化操作会报下面错误:1.2......
  • 记录--解决扫码枪因输入法中文导致的问题
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助问题最近公司项目上遇到了扫码枪因搜狗/微软/百度/QQ等输入法在中文状态下,使用扫码枪扫码会丢失字符的问题思考这种情况是由于扫码枪的硬件设备,在输入的时候,是模拟用户键盘的按键来实现的字符输入的,所以会触发......
  • mysql8.x root 密码忘记了如何重置
    网上也有很多关于重置密码的,由于版本的问题,很多无法正常重置密码。因此在这里将重置密码的方法进行整理下,方便以后参考:一、免密登录mysql1、停止mysql服务cmd窗口输入netstopmysql 2、设置免密登录mysqld--console--skip-grant-tables--shared-memory 3、另开一个cm......
  • java中的mysql优化
    Java中的MySQL优化有许多方面可以考虑,以下是一些常见的优化技巧:使用索引:为频繁进行查询的列创建索引,可以大大提高查询效率。但是需要注意不要过度索引,否则可能会降低写操作的性能。优化SQL查询语句:合理编写SQL语句,避免不必要的复杂查询。可以使用EXPLAIN语句来分析查询执行计划,找出......
  • DataFrame通过JDBC读写数据读写到数据mysql
    #coding:utf8importtimefrompyspark.sqlimportSparkSessionfrompyspark.sql.typesimportStructType,StringType,IntegerTypeimportpandasaspdfrompyspark.sqlimportfunctionsasFif__name__=='__main__':#0.构建执行环境入口对象SparkSes......
  • Mysql 8.0 Navicat连接Mysql报错Authentication plugin ‘caching_sha2_password‘ ca
    1、终端登陆MySQL$mysql-uroot-ppassword#登入mysql2、修改账户密码加密规则并更新用户密码ALTERUSER'root'@'localhost'IDENTIFIEDBY'123456'PASSWORDEXPIRENEVER;#修改加密规则ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_nat......
  • MySQL储存引擎
    目录MySQL储存引擎什么是储存引擎存储引擎的类型查看表的存储引擎(查全部的表)innodb和myisam的区别物理区别逻辑区别存储引擎如何查看存储引擎设置修改已经创建的表的存储引擎企业项目案例InnoDB特性——表空间共享表空间共享表空间存储:5.7共享表,临时表共享表空间切割企业案例Inn......
  • MySQL日志管理
    目录MySQL日志管理日志简介错误日志一般查询日志二进制日志binlogbinlog的工作模式statement语句模式row行级模式mixed混合模式查看binlog查看binlog内容和导出事件介绍使用binlog恢复数据案例模拟数据模拟数据故障恢复数据binlog的刷新和删除binlog的刷新删除binlogMySQL慢查......