您的当前位置:首页正文

Mysql 查询多(N)条重复数据,想要获取这些重复数据最近一条(有创建时间字段) 利用 ORDER BY + GROUP BY

2024-11-08 来源:个人技术集锦


问题?

1.差集

通过以下操作可以查询出差集。。。but 还没拿到重复数据的最近一条记录

SELECT * FROM A LEFT JOIN  B ON A.code = B.code  WHERE B.id IS NULL

2.查询一个值的最近一条记录

于是想到了最常用的,ORDER BY 通过排序可以利用 创建时间字段来排序+LIMIT 这样就可以获取到最近一条 (但是这个只是适用于查询一个code数据的操作)

SELECT * FROM A LEFT JOIN  B ON A.code = B.code  WHERE B.id IS NULL ORDER BY A.create_time LIMIT 1

3.查询N个值的最近一条记录

最后想到了ORDER BY + GROUP BY (ORDER BY 排序可以让时间倒序,GROUP BY 可以分组让我们根据code分组获取他们最近一条数据)

SELECT * FROM (SELECT * FROM (SELECT * FROM A LEFT JOIN  B ON A.code = B.code  WHERE B.id IS NULL ORDER BY A.create_time) test) AB WHERE AB.Status = '正常'

结 

(查询出差集,ORDER BY 让创建时间倒序)把这个结果当作一个结果集 test)利用结果集进行对重复数据去重GROUP BY分组之后再当做结果集 AB) 因为还有一个状态需要判断 AB = '正常'

Top