28 votes

Comment mettre à jour plusieurs lignes à l'aide d'une limite dans mysql ?

    UPDATE messages set test_read =1 
        WHERE userid='xyz' 
        ORDER BY date_added DESC  
        LIMIT 5, 5 ;

J'essaie d'utiliser cette requête pour mettre à jour un ensemble de 5 lignes en utilisant la limite, mais mysql affiche une erreur.

    UPDATE messages set test_read =1 
        WHERE userid='xyz' 
        ORDER BY date_added DESC  
        LIMIT 5 ;

pourquoi le premier ne fonctionne-t-il pas ?

54voto

Lukáš Lalinský Points 22537

Si vous devez absolument procéder de cette manière, vous pouvez utiliser quelque chose comme ceci :

 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
 );

-1voto

James Goodwin Points 4234

Pourquoi auriez-vous besoin de deux paramètres pour la fonction LIMIT déclaration si vous souhaitez limiter à 5 les résultats ? LIMIT 5,5 signifie se limiter à 5 enregistrements à partir du 5ème, mais comme vous faites et UPDATE Il n'est pas logique de l'utiliser de cette manière.

-2voto

Valentin Golev Points 5002
limit 0, 5

La syntaxe est la suivante : "limit from, count"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X