Maison > base de données > tutoriel mysql > Comment supprimer toutes les publications sauf les 15 dernières dans MySQL sans prise en charge de la sous-requête 'LIMIT & IN' ?

Comment supprimer toutes les publications sauf les 15 dernières dans MySQL sans prise en charge de la sous-requête 'LIMIT & IN' ?

Linda Hamilton
Libérer: 2024-11-11 15:44:03
original
241 Les gens l'ont consulté

How to Delete All Posts Except the Latest 15 in MySQL Without 'LIMIT & IN' Subquery Support?

Limite des sous-requêtes MySQL : suppression des publications à l'exclusion des 15 dernières

Dans le domaine de l'optimisation des bases de données, il est souvent nécessaire de supprimer les données redondantes ou obsolètes. Cette question explore comment supprimer toutes les publications à l'exception des 15 dernières à l'aide d'une sous-requête MySQL.

La requête d'origine :

DELETE FROM posts WHERE id NOT IN
(SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15)
Copier après la connexion

Cependant, cette requête rencontre une erreur en raison du manque de prise en charge par MySQL de Sous-requêtes 'LIMIT & IN/ALL/ANY/SOME' dans ses versions antérieures. Pour résoudre ce problème, une requête modifiée peut être utilisée :

DELETE
FROM posts
WHERE id NOT IN (
      SELECT * FROM (
            SELECT id
            FROM posts
            ORDER BY timestamp DESC
            LIMIT 0, 15
      ) 
      AS t);
Copier après la connexion

Dans cette requête modifiée, une sous-requête supplémentaire est introduite en tant que table dérivée en utilisant l'alias « t ». Cette table dérivée contient les identifiants des 15 dernières publications, triés par ordre décroissant en fonction de leur horodatage. La requête principale utilise ensuite cette table dérivée pour exclure ces identifiants spécifiques lors de la suppression des publications.

En utilisant cette solution de contournement, il est possible d'obtenir le résultat souhaité en supprimant toutes les publications, à l'exception des 15 plus récentes dans les versions de MySQL qui ne le font pas. Ne prend pas en charge les sous-requêtes 'LIMIT & IN/ALL/ANY/SOME'. Cette approche révisée supprime efficacement les publications obsolètes tout en préservant les dernières pour référence ultérieure.

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