PostgreSQL удалить из (выберите * из таблицы только первые 10 строк)

Как удалить только несколько строк в postgreSQL? Я хочу получить 10 строк для удаления в подзапросе.

мой стол

enter image description here

2 ответов


вам нужно использовать условие где согласно вашему требованию как это:

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)

или вы можете попробовать это, если вы хотите удалить топ-10, используя ctid:

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);

Если у вас есть уникальный идентификатор (последовательный, назовем его "id") в вашей таблице, то просто сделайте что-то вроде :

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

добавить или нет что-то вроде "LIMIT 0,10"