PostgreSQL删除(从选择的前10行中):SELECT * FROM 表格

27

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

我的表格

enter image description here

2个回答

60

您需要根据自己的要求使用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
)

如果你想从表格中移除重复项,那么可以尝试以下方法:

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

我只有相同的SerialId和valuetimestamp。请看我添加的图片。 - ArthurDatur
@ArthurDatur:- 你想要移除重复项吗? - Rahul Tripathi
不,我想要删除一半的帖子限制为10(共20个),但实际上有成千上万行。没有重复项。 - ArthurDatur
@ArthurDatur:请查看我的编辑。我已经更新了我的答案。 - Rahul Tripathi
2
我之前不知道 CTID!这很好用!非常感谢! - ArthurDatur

1
如果您的表中有一些唯一标识符(例如序列号,我们称之为“id”),那么只需执行以下操作:
DELETE FROM table WHERE table.id IN (SELECT table.id FROM table WHERE *whatever*)

在HTML中添加或不添加类似于“LIMIT 0,10”的内容。

我只有相同的SerialId和valuetimestamp。请查看我添加的屏幕截图。 - ArthurDatur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接