Maison > base de données > tutoriel mysql > Comment supprimer tous les enregistrements sauf les N derniers dans une table MySQL à l'aide de SQL ?

Comment supprimer tous les enregistrements sauf les N derniers dans une table MySQL à l'aide de SQL ?

Linda Hamilton
Libérer: 2025-01-08 16:11:42
original
826 Les gens l'ont consulté

How to Delete All But the Latest N Records in a MySQL Table Using SQL?

Supprimer efficacement les anciens enregistrements MySQL : conserver uniquement les derniers N

MySQL ne prend pas directement en charge la suppression d'enregistrements avec une clause LIMIT dans une sous-requête. Cependant, nous pouvons y parvenir en utilisant des sous-requêtes imbriquées pour une solution propre.

Disons que vous devez supprimer toutes les entrées sauf les N les plus récentes, classées par colonne id (décroissante). Cette approche évite l'écueil courant de l'utilisation de LIMIT directement dans l'instruction DELETE :

La requête suivante y parvient efficacement :

<code class="language-sql">DELETE FROM `table`
WHERE id NOT IN (
  SELECT id
  FROM (
    SELECT id
    FROM `table`
    ORDER BY id DESC
    LIMIT N
  ) as latest_records
);</code>
Copier après la connexion

Cette requête exploite une sous-requête (latest_records) pour identifier les identifiants des N enregistrements les plus récents. L'instruction DELETE externe supprime ensuite toutes les lignes dont les ID ne sont pas dans cet ensemble.

N'oubliez pas que les performances peuvent être encore optimisées en fonction de la structure de votre table et du volume de données spécifiques. Pensez à ajouter des index à la colonne id pour des améliorations significatives des performances.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal