/ / Elimina solo 500 righe da una tabella: sql, sql-server, tsql

Elimina solo 500 righe da una tabella: sql, sql-server, tsql

Qualcuno può per favore, aiutami con una query per eliminare solo 500 righe da una tabella che ha 20000 righe. Inoltre deve essere più vecchio di una data particolare.

Grazie per l'aiuto,

Soofy

risposte:

9 per risposta № 1

Puoi utilizzare la parola chiave Top come faresti in una selezione

Delete Top (500)
From myTable
Where Date < "01/01/2009"

6 per risposta № 2

Se stai usando SQL Server 2005, puoi farlo:

DELETE TOP (500) FROM your_table
WHERE date_field < @my_particular_date

oppure puoi farlo:

SET ROWCOUNT 500

DELETE your_table
WHERE date_field < @my_particular_date

in SQL Server 2000, è possibile effettuare ciò:

DELETE your_table
WHERE pk_field IN (
SELECT TOP (500) * FROM your_table
WHERE date_field < @my_particular_date
)

3 per risposta № 3
DELETE FROM Table_Name WHERE Primary_Key_Column IN (
SELECT TOP 500 Primary_Key_Column FROM Table_Name WHERE [Date] < "01/01/2009"  ORDER BY Primary_Key_Column ASC
)

1 per risposta № 4

SET ROWCOUNT 500

DELETE FROM TableName WHERE TheDate <@YourDate


1 per risposta № 5

Top funziona solo in Transact Sql, ogni sql ha la propria versione

Per mySql e posGres

Delete
From myTable
Where Date < "01/01/2009"
LIMIT 10;

Per oracolo:

SELECT
FROM myTable
WHERE Date < "01/01/2009"
and ROWNUM <= 10

0 per risposta № 6

L'unica cosa che aggiungerò è che probabilmente lo vorraiutilizzare "ORDER BY [DATE] DESC" alla fine della maggior parte di queste query. E se hai più date di abbinamento, ti consigliamo di aggiungere ulteriori ordinazioni di colonne per ottenere i valori corretti cancellati.

Questo presume, naturalmente, che tu abbia effettivamente un"createddate" o "modifieddate" che puoi utilizzare per ordinare. Non hai specificato se era il più vecchio creato o il più vecchio non modificato (cioè se ID = 1 è il più vecchio ma l'ho modificato ieri dovrebbe ancora essere cancellato?) Che dovrai fare attenzione se si ordina la chiave primaria - supponendo che stai usando una chiave primaria incrementale e non GUID o qualcosa del genere ...