web-dev-qa-db-fra.com

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

Comment puis-je supprimer seulement quelques lignes dans postgreSQL? Je veux extraire 10 lignes à supprimer dans une sous-requête.

Ma table

 enter image description here

9
ArthurDatur

Vous devez utiliser une condition where selon vos besoins, comme ceci:

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

ou

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

ou vous pouvez essayer comme ceci si vous voulez supprimer le top 10 en utilisant ctid :

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

Si vous cherchez à supprimer les doublons de votre table, essayez ceci:

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

Si vous avez un identifiant unique (serial, appelons-le "id") dans votre table, créez simplement quelque chose comme

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

Ajouter ou non quelque chose comme "LIMIT 0,10"

0
Julo0sS