web-dev-qa-db-fra.com

Supprimer les premières lignes X d'une base de données

existe-t-il une commande SQL pour supprimer les premières lignes X d'une table de base de données?

J'ai une table de base de données contenant des informations mais pas d'ID ou de valeur auto-incrémentée et un programme qui traite les premières lignes X de cette table. Ensuite, ces lignes X doivent être supprimées. La requête standard est donc:

DELETE FROM table WHERE something = value;

Alors, existe-t-il un moyen de construire une requête comme:

DELETE FROM table WHERE rownumber <= X;

J'ai essayé cette commande, mais rien ne se passe dans la base de données .. Avez-vous un indice?

21
coroner

Utilisez LIMIT sur votre suppression:

DELETE FROM table WHERE condition LIMIT 10

Ou, si vous ne voulez pas de la condition

DELETE FROM table LIMIT 10

N'oubliez pas que l'ordre dans lequel les lignes seront supprimées n'est pas défini - cela dépend de la configuration de votre SGBD et des index de table. Vous devez inclure un ORDER BY pour que la suppression se fasse dans un ordre défini, par exemple ORDER BY id ASC pour supprimer d'abord les identifiants les plus bas.

Voir documentation MySQL pour DELETE pour plus de détails.

42
Polynomial