sql - 从表中删除具有两个重复列的最旧条目 - 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 是具有重复条目的唯一组合。
上述查询给出了具有重复项的条目。我们要根据另一列时间戳删除最旧的条目
解决方案
一种方法是:
delete from t
where t.timestamp > (select min(t2.timestamp)
from t t2
where t2.column1 = t.column1 and t2.column2 = t.column2
);
推荐阅读
- mongodb - mongoDB聚合:如何使用值作为键
- powershell - 如何正确使用 Remove-Item 中的 -Exclude 来获取 Powershell 中变量的字符串列表?
- r - 在 R 中使用一组 beta 进行预测
- c# - 如何以线程安全的方式生成顺序唯一 ID
- react-native - 将导航闪屏反应到登录屏幕
- angular - Angular“错误TS2559:类型'字符串'没有与类型'{ headers?:HttpHeaders”相同的属性
- java - 使用 XMLSerializer 使根元素成为数组的 Java XML 到 JSON
- c# - IIS 7.5 和 2008 R2 中的 viewstate mac 验证失败
- wordpress - OceanWP 根据当前锚定部分更改文本颜色菜单
- ios - 'UIView' 类型的值?没有成员'roundCorners'