欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql 选择重复数据时,选择时间最近的条目 多种方法分析

程序员文章站 2022-03-07 10:51:48
...

mysql 选择重复数据时,选择时间最近的条目 多种方法分析

上图是数据,相同的单号存在多条扫码记录,由于数据是异步多线程获取的ID值不能代表先后顺序,需要通过判断时间来选择数据

有以下方式

#第一种方式 通过左连接方式
SELECT
	s.* 
FROM
( SELECT max( 添加时间 ) AS 添加时间 FROM `scanData` as b GROUP BY `面单编号` ) as t
LEFT JOIN `scanData` AS s ON t.添加时间 = s.添加时间 
ORDER BY s.`添加时间` DESC;


#第二种 通过组合查询
SELECT
	a.* 
FROM
	scanData AS a,
	( SELECT max( 面单编号 ) AS 面单编号, max( 添加时间 ) AS 添加时间 FROM scanData AS b GROUP BY 面单编号 ) AS b 
WHERE
	a.面单编号 = b.面单编号 AND a.添加时间 = b.添加时间 
	ORDER BY a.`添加时间` DESC;

下面是执行结果,发现左连接方式需要0.027s  组合方式只需要0.005s 

百度搜索的时候有其他同志说左连接效率更高的说法有些问题,特此记录

mysql 选择重复数据时,选择时间最近的条目 多种方法分析

相关标签: mysql 重复数据