2012-10-08 16 views
15

Esiste un comando SQL per eliminare le prime X righe di una tabella di database?Elimina le prime X righe di un database

Ho una tabella di database contenente alcune informazioni ma nessun ID o valore di autoincremento e un programma che elabora le prime linee X di questa tabella. Successivamente queste X linee devono essere cancellate. Quindi la query standard è:

DELETE FROM table WHERE something = value; 

Quindi, c'è un modo per costruire una query come:

DELETE FROM table WHERE rownumber <= X; 

Ho provato questo comando, ma non succede nulla al database .. Hai qualche indizio?

risposta

33

Uso LIMIT sulla cancellazione:

DELETE FROM table WHERE condition LIMIT 10 

Oppure, se non si desidera che la condizione

DELETE FROM table LIMIT 10 

ricordare che l'ordine in cui verranno eliminate le righe non è definito - dipende la configurazione del DBMS e gli indici delle tabelle. Dovresti includere un ORDER BY in modo che la cancellazione venga eseguita in un ordine definito, ad es. ORDER BY id ASC per eliminare prima gli ID più bassi.

Vedere MySQL documentation for DELETE per ulteriori dettagli.

+1

Fai molta attenzione quando lo fai. L'ordine della selezione può cambiare se si aggiunge un indice o qualcosa del genere. Il server SQL semplifica la selezione che può trovare quando non aggiunge una clausola where. – Romo

+0

Questo è corretto. Si applicano i normali requisiti di "ORDINA PER". Ho modificato per riflettere questo. – Polynomial

+0

Grazie per la tua risposta! Ho provato questo e sfortunatamente funziona solo quando viene data una condizione. Quindi ora uso 'DELETE FROM tabella WHERE a_field> 0 LIMIT X;' Questo funziona finora. Grazie :-) – coroner

Problemi correlati