Comment supprimer tous les enregistrements sauf les N derniers enregistrements en SQL
Il s'agit d'un problème courant : votre table est pleine d'enregistrements, mais vous souhaitez uniquement conserver les N derniers enregistrements et supprimer le reste. Bien que la requête que vous avez posée démontre l'intention, elle ne parvient pas à atteindre son objectif en raison des limitations de MySQL.
Ne vous inquiétez pas, des solutions existent ! La requête suivante permettra d'obtenir les résultats souhaités :
<code class="language-sql">DELETE FROM `table` WHERE id NOT IN ( SELECT id FROM ( SELECT id FROM `table` ORDER BY id DESC LIMIT N -- 保留最新的N条记录 ) foo );</code>
Décomposition des requêtes :
Restrictions contournées :
Instructions d'optimisation :
En fonction de votre cas d'utilisation, la requête optimisée suivante peut être plus adaptée :
<code class="language-sql">DELETE FROM `table` ORDER BY id DESC LIMIT ROWS COUNT() - N -- 只保留最新的N条记录</code>
Si elle répond à vos exigences, envisagez cette optimisation car elle peut améliorer considérablement les 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!