Maison  >  Article  >  base de données  >  Comment supprimer une plage spécifique de lignes dans MySQL à l'aide de la clause LIMIT ?

Comment supprimer une plage spécifique de lignes dans MySQL à l'aide de la clause LIMIT ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-25 13:58:30302parcourir

How to Delete a Specific Range of Rows in MySQL Using LIMIT Clause?

Instruction MySQL DELETE avec limite

Un utilisateur rencontre une erreur en essayant de supprimer des lignes d'une table à l'aide de la requête suivante :

DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;

Le message d'erreur indique que la syntaxe est incorrecte.

Explication

L'erreur se produit car l'instruction DELETE utilisée ici inclut un décalage dans le LIMIT clause. Ceci n'est pas autorisé dans MySQL. La clause LIMIT ne peut spécifier que le nombre de lignes à supprimer.

Solution

Pour supprimer une plage spécifiée de lignes d'une table, vous ne pouvez pas utiliser la fonction de décalage dans la clause LIMIT. Au lieu de cela, vous devez utiliser une sous-requête pour sélectionner les lignes à supprimer, puis les supprimer à l'aide de leurs valeurs de clé primaire.

La requête suivante peut être utilisée dans ce scénario :

DELETE FROM `chat_messages`
WHERE `id` IN (
    SELECT `id` FROM (
        SELECT `id` FROM `chat_messages`
        ORDER BY `timestamp` DESC
        LIMIT 20, 50
    ) AS `x`
)

Cette requête utilise une double imbrication pour sélectionner les lignes à supprimer et contourner les limitations 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!

Déclaration:
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