sql - MS-Access:删除重复的行,但保留最新日期的行
问题描述
我是 SQL 和 MS-Access 的新手,可能需要一些帮助。我的表看起来像这样,我想删除所有行,其中C1
和C2
是C3
相同的,但保留最新日期的行。在这种情况下,我想删除ID
2 和 5 的行。
ID | C1 | C2 | C3 | Date |
1 | a | a | b | 01.04.20|
2 | a | a | b | 01.03.19|
3 | a | b | b | 01.04.20|
4 | a | b | c | 01.04.20|
5 | a | b | c | 07.05.19|
我试图用数字计算行,ROW_NUMBER OVER (PARTITION BY C1,C2,C3 ORDER BY Date ASC)
这样我就可以删除所有行号> 1的行。但不幸PARTITION BY
的是在 Access 中不起作用。
你有另一个想法我怎么能做到这一点?
以下查询为我提供了我想要的表。但我怎么能继续这样做呢?
SELECT C1,C2,C3, max(Date)
FROM Table
GROUP BY C1,C2,C3
谢谢您的帮助!
解决方案
在 MS Access 中,您可以使用:
select t.*
from t
where t.date = (select max(t2.date)
from t as t2
where t2.c1 = t.c1 and t2.c2 = t.c2 and t2.c3 = t.c3
);
您可以删除具有类似逻辑的行:
delete from t
where t.date < (select max(t2.date)
from t as t2
where t2.c1 = t.c1 and t2.c2 = t.c2 and t2.c3 = t.c3
);
推荐阅读
- python - 一种从 Python 中的类实例访问上下文管理器变量的方法?
- python - 将列表列表的特定元素除以一个数字?
- c# - 无法在 Invoke 中调用方法
- r - R - 无论如何要加快 dbWriteTable?
- django - 当创建用户并选择特定组时,如何在 Django 中将 is_staff 设置为 True
- html - 如何修复 Bootstrap 5 中的填充问题?
- c - 为什么这个结构数组会覆盖 char * 而不是 int?
- nginx - 应用程序的 Nginx 配置问题
- javascript - 图像上的 Fabric JS 设置填充不起作用
- laravel-8 - SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败