DELETE子句在单个查询我有以下表结构,对于一个上(UID,时间戳)使用WITH + PostgreSQL中
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 |
我需要删除的所有条目命名用的PrimaryKey表特定用户(uid)它们比最大时间戳更早,例如max是123456789(以秒为单位),而增量为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);
任何解决方案?
你想要涉及单个最大值还是每个用户的最大值?每个用户最多可以使用 – Mureinik
。 –