gpt4 book ai didi

sql - 删除具有特定列值的所有行(每个用户的最新行除外)

转载 作者:行者123 更新时间:2023-12-03 18:25:13 25 4
gpt4 key购买 nike

我有一个表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仅保留一个事件,即具有最新 timestampevent_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)
);


我很确定可以对此进行改进。有任何想法吗?

最佳答案

我认为您应该可以执行以下操作:

delete from events
where (user, timestamp) not in (
select user, max(timestamp)
from events
where event_type = 'DTV'
group by user
)


您可能会做一些更复杂的技巧,例如替换表或分区,这取决于您使用的数据库。

关于sql - 删除具有特定列值的所有行(每个用户的最新行除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10878534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com