5 votes

Mettre à jour la ligne qui a la valeur la plus élevée (max) d'un champ.

J'ai cette requête sql, qui est fausse. Je veux mettre à jour le champ "prevmonth" dans la table des gains, mais seulement pour l'enregistrement qui a la valeur maximale pour le champ "month_wins".

UPDATE wins 
SET prevmonth_top=1 
WHERE month_wins = (SELECT MAX(month_wins) FROM wins)

Mais comment puis-je le faire ?

21voto

John Woo Points 132738

Essayez cette astuce,

UPDATE wins
SET prevmonth_top=1 
ORDER BY month_wins DESC
LIMIT 1

ou quelque chose comme ça,

UPDATE IGNORE giveaways 
SET winner = 1 
WHERE month_wins = (select maxID from (SELECT MAX(ID) maxID FROM giveaways) as t)

MEME QUE Vous ne pouvez pas spécifier la table cible 'nom_table' pour la mise à jour dans la clause FROM.

5voto

LolCoder Points 6386

Exécutez la requête suivante, cela peut vous aider :

UPDATE wins 
SET prevmonth_top=1  WHERE month_wins = 
(
      SELECT month_wins FROM (SELECT MAX(month_wins) FROM wins) AS month_wins
)

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