Maison >base de données >tutoriel mysql >Comment supprimer toutes les lignes sauf les N premières d'une table de base de données SQL ?

Comment supprimer toutes les lignes sauf les N premières d'une table de base de données SQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-29 04:22:09806parcourir

How to Delete All but the Top N Rows from a SQL Database Table?

Requête SQL pour supprimer toutes les lignes sauf les n premières d'une table de base de données

Dans de nombreux scénarios, il devient nécessaire de supprimer toutes les données d'une table de base de données. table de base de données, à l'exception des n premières lignes. Cette opération nécessite une requête soigneusement conçue pour garantir que seul le nombre de lignes souhaité est conservé.

Approche recommandée :

Le moyen le plus efficace de tout supprimer sauf le haut n lignes d'une table en SQL consiste à exécuter une requête qui sélectionne les lignes souhaitées, puis utilise l'instruction DELETE pour supprimer les lignes restantes. Le modèle de requête suivant illustre cette approche :

DELETE FROM TableName WHERE ID NOT IN (
    SELECT DISTINCT TOP n ID
    FROM TableName
    ORDER BY ID
)

Avantages :

  • Cette méthode garantit que seules les n premières lignes sont conservées dans le tableau.
  • Il est relativement simple à mettre en œuvre et peut être exécuté efficacement.

Exemple :

Considérons un tableau nommé "Ventes" avec les données suivantes :

ID Name Amount
1 John 100
2 Mary 200
3 Bob 300
4 Ann 400

Pour supprimer tout sauf les 2 premières lignes de ce tableau, nous utiliserions la requête suivante :

DELETE FROM Sales WHERE ID NOT IN (
    SELECT DISTINCT TOP 2 ID
    FROM Sales
    ORDER BY ID
)

Après avoir exécuté cette requête, le tableau "Ventes" contiendrait uniquement les lignes suivantes :

ID Name Amount
1 John 100
2 Mary 200

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn