PostgreSQL DELETE FROM (SELECT * FROM table 仅获取前 10 行)

PostgreSQL DELETE FROM (SELECT * FROM table FETCH FIRST 10 ROWS ONLY)

如何在 postgreSQL 中只删除几行? 我想获取 10 行以在子查询中删除。

我的table

您需要根据您的要求使用 where 条件,如下所示:

delete from mytable where id in(1,2,3,4,5,6,7,8,9,10)

delete from mytable where id in(select id from mytable where someconditon)

或者如果你想使用 ctid 删除前 10 名,你可以这样尝试:

DELETE FROM mytable 
WHERE ctid IN (
    SELECT ctid
    FROM mytable 
    GROUP BY s.serialId, s.valuetimestamp
    ORDER BY s.serialId
    LIMIT 10
)

如果您想从 table 中删除重复项,请尝试以下操作:

DELETE FROM mytable
 WHERE ctid NOT IN
  (SELECT MAX(s.ctid)
    FROM table s
    GROUP BY s.serialId, s.valuetimestamp);

如果您的 table 中有一些唯一标识符(序列号,我们称它为 "id"),那么只需制作如下内容:

DELETE FROM table WHERE table.id IN (SELECT table.id FROM table WHERE *whatever*)

添加或不添加 "LIMIT 0,10"