首页 > 解决方案 > 从表中删除具有两个重复列的最旧条目 - SQL

问题描述

 SELECT column1, column2, count(*) as duplicate 
 FROM table 
 GROUP BY column1, column2 HAVING count(*)> 1 ;

ID   column1 column2 timestamp
abc  123     1       2020-02-03 19:36:27
xyz  123     1       2020-02-02 15:36:27

column1 和 column2 是具有重复条目的唯一组合。

上述查询给出了具有重复项的条目。我们要根据另一列时间戳删除最旧的条目

标签: sql

解决方案


一种方法是:

delete from t
    where t.timestamp > (select min(t2.timestamp)
                         from t t2
                         where t2.column1 = t.column1 and t2.column2 = t.column2
                        );

推荐阅读