MySQL : Clause limite pour les mises à jour multi-lignes
Dans MySQL, la clause LIMIT est couramment utilisée pour limiter le nombre de lignes sélectionnées dans un tableau. Cependant, il peut également être utilisé pour spécifier le nombre maximum de lignes à mettre à jour. Cependant, certaines contraintes doivent être prises en compte pour éviter les erreurs.
La requête fournie :
UPDATE messages set test_read =1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5, 5 ;
échoue car le deuxième paramètre de LIMIT spécifie le décalage, pas la limite. Par conséquent, la requête demande à MySQL de mettre à jour les lignes après la 10ème ligne (ignorez les 5 premières lignes, puis appliquez le décalage de 5).
Pour résoudre ce problème, utilisez la requête suivante :
UPDATE messages set test_read =1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5 ;
Cette requête met correctement à jour les 5 premières lignes.
Si vous souhaitez mettre à jour une plage spécifique de lignes, comme la 6ème à 10ème, vous pouvez utiliser une sous-requête :
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 );
Cette requête utilise une sous-requête pour sélectionner les ID des lignes dans la plage spécifiée. Ensuite, la requête principale met à jour ces lignes en conséquence.
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!