MySQL : Utiliser LIMIT pour mettre à jour plusieurs lignes
Dans MySQL, la clause LIMIT permet de restreindre le nombre de lignes affectées par une requête . Cependant, lors de l'utilisation de LIMIT avec l'instruction UPDATE, une erreur courante se produit lors de la tentative de mise à jour d'une plage spécifique de lignes.
Considérez la requête suivante :
UPDATE messages SET test_read=1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5, 5;
Cette requête vise à mettre à jour cinq lignes, à partir de la cinquième ligne, dans le tableau "messages" où "userid" est égal à "xyz". Cependant, cette requête entraînera une erreur.
Pour comprendre pourquoi, il est important de noter que la clause LIMIT dans ce contexte définit un décalage et un nombre maximum de lignes. Dans cet exemple, il récupère et limite le nombre de lignes affichées plutôt que de les mettre à jour. Pour mettre à jour une plage spécifique de lignes, une sous-requête peut être utilisée à la place :
UPDATE messages SET test_read=1 WHERE id IN ( SELECT id FROM ( SELECT id FROM messages ORDER BY date_added DESC LIMIT 5, 5 ) tmp );
Dans cette requête modifiée, une sous-requête est utilisée pour sélectionner les ID des cinq lignes qui doivent être mises à jour. L'instruction principale UPDATE fait ensuite correspondre ces identifiants et effectue la mise à jour. Cela garantit que seules les lignes souhaitées sont modifiées.
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!