【发布时间】:2016-09-10 12:55:17
【问题描述】:
我有以下表结构,对于一个名为listens 的表,PRIMARYKEY on (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);
有什么解决办法吗?
【问题讨论】:
-
您想关联单个最大值还是每个用户的最大值?
标签: sql postgresql common-table-expression dml