sql - 如何按列式数据库删除重复数据
问题描述
我有一个表,其中一列有多个重复的行。所以我想清除重复的数据。
事件表:
event_id, event_type, data_id, data date
1 insert 1 x 06.03.2019 13:04
2 update 1 x1 06.03.2019 13:05
3 update 1 x11 06.03.2019 13:06
4 insert 2 y 06.03.2019 13:07
5 update 1 x111 06.03.2019 13:08
6 delete 1 x111 06.03.2019 13:09
7 update 2 y1 06.03.2019 13:10
8 update 2 y11 06.03.2019 13:11
9 update 2 y11 06.03.2019 13:12
每个数据 id 在表中都有1
插入、N
更新和1
删除事件行。所以我想删除N-1
更新事件,但最后一个事件不会被删除。例如,在此表中,data_id=1
更新事件是2,3,5
. 我想删除2
,3
但不是5
。因为5
是最后一次更新。
解决方案
我会把它写成存在:
DELETE
FROM your_table t1
WHERE EXISTS (SELECT 1 FROM your_table t2
WHERE t1.data_id = t2.data_id AND
t2.event_id < t1.event_id AND
t2.event_type = 'update') AND
t1.event_type = 'update';
推荐阅读
- jpa - LocalDateTime 和 JodaDate 冲突
- astropy - 如何用天体计算宇宙的年龄?
- reactjs - 如何解决没有。使用 d3 在条形图中 X 轴上的刻度?
- python - Gcode解析问题?- for 循环字节和字符串
- php - 从具有特定长度的字符串创建数组
- c# - 使用 jenkins 在 Windows 服务器上部署 Angular 应用程序
- c# - 具有多个受影响行的 RETURNING 子句
- java - 错误:在 com.company.StudentGrade 类中找不到主方法,请将主方法定义为:public static void main(String[] args)
- python - Python 正则表达式匹配用引号括起来的关键字在另一个用引号括起来的关键字之后
- php - 在 PHP 中的 Group Drop Down 中获取标签的值和选定的选项