【发布时间】:2018-11-20 04:10:37
【问题描述】:
我忘记在我的表中添加唯一索引(process_id、result_id):
id, created_at, process_id, result_id, value
1, 2018-11-01, 1, 1, a
2, 2018-11-03, 1, 1, b
3, 2018-11-05, 2, 4, c
现在,对于 process_id 和 result_id 的相同组合,我有多个条目。
为了添加唯一索引,我需要删除重复项,只保留每个进程/结果对的最新条目 (created_at)。
如何轻松识别和删除较旧的重复项?
我可以识别所有重复项:
select pr.id, pr.created_at, prd.*
from process_results pr
join (
select process_id, result_id
from process_results
group by process_id, result_id
having count(*) > 1
) prd on pr.request_id = prd.request_id and pr.request_filter_id = prd.request_filter_id
但我不知道如何删除除最新的以外的所有内容
预期结果:
id, created_at, process_id, result_id, value
2, 2018-11-03, 1, 1, b
3, 2018-11-05, 2, 4, c
【问题讨论】:
-
向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。 How to create a Minimal, Complete, and Verifiable example
标签: mysql