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

Art*_*tur 12 postgresql subquery sql-delete

如何在postgreSQL中只删除几行?我想在子查询中获取要删除的10行.

我的桌子

在此输入图像描述

Rah*_*thi 25

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

delete from mytable where id in(1,2,3,4,5,6,7,8,9,10)
Run Code Online (Sandbox Code Playgroud)

要么

delete from mytable where id in(select id from mytable where someconditon)
Run Code Online (Sandbox Code Playgroud)

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

DELETE FROM mytable 
WHERE ctid IN (
    SELECT ctid
    FROM mytable 
    GROUP BY s.serialId, s.valuetimestamp
    ORDER BY s.serialId
    LIMIT 10
)
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我不知道CTID!工作得很好!非常感谢! (2认同)