数据库有重复的数据时,我们有时候需要取出时间最近的一条,来满足业务场景。
从重复数据里面找出最后更新的数据
1.SQL模板
SELECT
t1.重复列,
t1.时间列,
t1.其余列
FROM
表 t1
INNER JOIN ( SELECT t2.重复列, max( t2.时间列 ) AS 时间列 FROM 表 t2 GROUP BY t2.重复列 ) AS t3 ON t1.重复列 = t3.重复列
AND t1.时间列 = t3.时间列
2、SQL查询数据
SELECT t1.id,t1.dept_id,t1.update_time
FROM tableA t1 INNER JOIN ( SELECT t2.id, max( t2.update_time )
AS last_updated_date FROM tableA t2 GROUP BY t2.id )
AS t3 ON t1.id = t3.id
AND t1.update_time = t3.last_updated_date
and t1.id in ("220995","220513","221116");
+----------+----------+---------------------+
| id | dept_id | update_time |
+----------+----------+---------------------+
| 220513 | 10102319 | 2024-08-09 23:59:59 |
| 220100 | 10116221 | 2024-09-04 00:00:00 |
| 221106 | 10093004 | 2024-08-09 23:59:59 |
| 220995 | 10116219 | 2024-08-23 00:00:00 |
+----------+----------+---------------------+