我有以下表结构,表名为listens
,主键为(uid,timestamp)
Column | Type | Modifiers
----------------+-----------------------------+------------------------------------------------------
id | integer | not null default nextval('listens_id_seq'::regclass)
uid | character varying | not null
date | timestamp without time zone |
timestamp | integer | not null
artist_msid | uuid |
album_msid | uuid |
recording_msid | uuid |
json | character varying |
我需要删除特定用户(uid)的所有条目,这些条目比最大时间戳旧,假设max为123456789 (以秒为单位),delta为100000,则所有比max-100000更旧的记录都将被删除。
当表中只包含单个用户时,我已经成功创建了一个查询,但我无法使其适用于数据库中的每个用户。这个操作需要针对数据库中的每个用户执行。
WITH max_table as (
SELECT max(timestamp) - 10000 as max
FROM listens
GROUP BY uid)
DELETE FROM listens
WHERE timestamp < (SELECT max FROM max_table);
有任何解决方案吗?