it-swarm.com.de

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

Wie lösche ich nur ein paar Zeilen in postgreSQL? Ich möchte 10 Zeilen zum Löschen in einer Unterabfrage abrufen.

Mein Tisch

 enter image description here

9
ArthurDatur

Sie müssen eine Where-Bedingung entsprechend Ihrer Anforderung verwenden:

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

oder

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

oder Sie können es so versuchen, wenn Sie Top 10 mit ctid löschen möchten:

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

Wenn Sie die Duplikate aus Ihrer Tabelle entfernen möchten, versuchen Sie Folgendes:

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

Wenn Sie einen eindeutigen Bezeichner (seriell, nennen wir "id") in Ihrer Tabelle, dann machen Sie einfach etwas wie:

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

Hinzufügen oder nicht wie "LIMIT 0,10"

0
Julo0sS