我有一个events
包含用户事件的表,例如:
PK | user | event_type | timestamp
--------------------------------
1 | ab | DTV | 1
2 | ab | DTV | 2
3 | ab | CPVR | 3
4 | cd | DTV | 1
5 | cd | DTV | 2
6 | cd | DTV | 3
我想要做的是每个事件只保留一个事件user
,即具有最新timestamp
和的事件event_type = 'DTV'
。
对上面的示例应用删除后,表格应如下所示:
PK | user | event_type | timestamp
--------------------------------
2 | ab | DTV | 2
6 | cd | DTV | 3
你们中的任何人都可以想出完成这项任务的方法吗?
更新:我正在使用 Sqlite。这是我到目前为止所拥有的:
delete from events
where id not in (
select id from (
select id, user, max(timestamp)
from events
where event_type = 'DTV'
group by user)
);
我很确定这可以改进。有任何想法吗?