2015-10-09 20 views

risposta

10

è necessario utilizzare una condizione in cui secondo il vostro requisito come questo:

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

o

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

o si può provare in questo modo se si desidera eliminare la top 10 utilizzando ctid:

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

Se state cercando di rimuovere i duplicati dal vostro tavolo quindi provare questo:

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

ho solo la stessa SerialId un e valuetimestamp's. Se la mia foto che ho aggiunto. – ArthurDatur

+0

@ArthurDatur: - Vuoi rimuovere i duplicati? –

+0

No, voglio rimuovere metà dei messaggi LIMIT 10 (di 20) bu in realtà sono migliaia di righe Non ci sono duplicati – ArthurDatur

0

Se avete qualche identificatore univoco (seriale, chiamiamolo "id") nella tabella, poi solo fare qualcosa di simile:

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

Aggiungere o meno qualcosa di simile "limite di 0,10"

+0

Ho solo lo stesso SerialId e valuetimestamp. Per favore, vedi il mio screendump che ho aggiunto – ArthurDatur