Maison > base de données > tutoriel mysql > le corps du texte

Comment supprimer un nombre spécifique de lignes par ordre décroissant dans MySQL avec des restrictions ?

DDD
Libérer: 2024-10-28 11:54:41
original
501 Les gens l'ont consulté

How to Delete a Specific Number of Rows in Descending Order in MySQL with Restrictions?

Suppression de lignes avec des restrictions dans MySQL

Cette question explore l'utilisation de l'instruction DELETE avec la clause LIMIT dans MySQL. L'utilisateur tente de supprimer un nombre spécifié de lignes par ordre décroissant en fonction de la colonne d'horodatage. Cependant, la requête échoue avec une erreur de syntaxe.

L'erreur survient car MySQL n'autorise pas les décalages dans la clause LIMIT d'une instruction DELETE. Par conséquent, la requête ne peut pas être exécutée comme prévu.

Pour résoudre ce problème, la requête peut être réécrite en utilisant une approche différente. La requête réécrite utilise des sous-requêtes imbriquées pour sélectionner les lignes à supprimer en fonction de la plage souhaitée.

DELETE FROM `chat_messages` 
WHERE `id` IN (
    SELECT `id` FROM (
        SELECT `id` FROM `chat_messages`
        ORDER BY `timestamp` DESC
        LIMIT 20, 50
    ) AS `x`
)
Copier après la connexion

Dans cette requête modifiée, une sous-requête imbriquée sélectionne les valeurs d'identifiant des lignes à supprimer. La clause LIMIT est appliquée à la sous-requête la plus interne pour restreindre l'ensemble de résultats.

Étant donné que MySQL interdit la sélection à partir d'une table actuellement modifiée, la requête utilise une double imbrication pour contourner cette limitation. La sous-requête externe sert de table temporaire, permettant à la sous-requête la plus interne de sélectionner les valeurs d'identifiant dans un ensemble de résultats distinct.

En implémentant cette technique, la requête peut supprimer avec succès des lignes dans la plage spécifiée tout en respectant les exigences de syntaxe de MySQL. .

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!