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"
如何在 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"