Maison > base de données > tutoriel mysql > Comment supprimer des enregistrements en fonction de critères spécifiques dans MySQL à l'aide de sous-requêtes ?

Comment supprimer des enregistrements en fonction de critères spécifiques dans MySQL à l'aide de sous-requêtes ?

DDD
Libérer: 2024-11-09 22:08:02
original
611 Les gens l'ont consulté

How to Delete Records Based on a Specific Criteria in MySQL using Subqueries?

Utilisation de sous-requêtes pour la manipulation de données dans MySQL

La tâche à accomplir consiste à supprimer sélectivement des enregistrements d'une table en fonction d'un critère spécifique. En tirant parti des sous-requêtes, nous pouvons y parvenir en utilisant MySQL.

Pour commencer, considérons la requête suivante :

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

Cette requête vise à supprimer les publications qui ne font pas partie des 15 derniers enregistrements, comme ordonné par le champ "horodatage". Cependant, les versions MySQL antérieures à 8.0 rencontrent une erreur lors de la tentative de combinaison d'une clause LIMIT avec une sous-requête IN.

Pour surmonter cette limitation, nous pouvons utiliser une solution de contournement de sous-requête imbriquée. La requête révisée devient :

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 réécrite, nous créons une sous-requête interne pour récupérer les identifiants des 15 dernières publications. La sous-requête externe alias ensuite les résultats à l'aide de la clause "AS t".

En utilisant cette approche de sous-requête imbriquée, nous pouvons efficacement obtenir le résultat souhaité, même avec les anciennes versions de MySQL qui ne prennent pas entièrement en charge la combinaison LIMIT et IN. .

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal