J'ai une table mysql de Le problème: je veux sélectionner des enregistrements, groupés par Un exemple: p>
Tom 2 p>
ben 1 p>
ben 2 p>
Sélectionnez * à partir de retourne généralement: p>
Tom 2 p>
ben 1 p>
J'ai besoin de: p>
Tom 2 P>
ben 2 p>
Comme il y a deux bens, mais le second avec un rang supérieur. P>
Il semble que le groupement MySQL prend le prénom et ignore le reste. P>
Comment puis-je commander des enregistrements dans "groupe par", afin que je puisse dire quel enregistrement doit être pris, s'il y a plus d'un avec le même nom noms code>, qui se compose de deux champs:
nom code> et
rang code>. Le nom
nom code> n'est pas unique peut avoir plusieurs correspondances. P>
nom code>, mais s'il y a plus d'un
nom code>, celui avec le rang
le plus élevé code> devrait être pris. p>
noms code> Groupe par
Nom code>
Commande par
Rank Code> Desc P>
blockQuote>
p>? p>
3 Réponses :
Vous avez besoin d'un Fonction d'agrégat appelée De cette façon, vous récupérerez tous les noms distincts, chacun associé à son rang Max. p> p> max code>:
Vous devez toujours utiliser groupe par nom code> de sorte que le
max (grade) code> par
nom code> est renvoyé et non le
maximum ( rang) code>.
@Dennis: Oui. déjà ajouté cette partie. oublié avec la ruée pour que la question soit la question soit la première. :-)
Cela donne aux lignes où chaque nom a le rang Max, ce que vous vouliez seulement le nom qui avait le rang Max?
Utiliser max () code>:
Pour moi, il a été fonctionné:
Pour prendre la dernière rangée dans un groupe: P>
select * from ( select name, rank from names order by rank desc ) as a group by name
La syntaxe n'est pas correcte (vous ne pouvez pas SELECT * CODE> tandis que
groupe par nom code>)
Je suppose que vous n'avez pas essayé de le faire, car, si vous aviez essayé, vous savez que cela fonctionne. Non seulement sur cet exemple, mais vous pouvez également obtenir toutes les informations sur la ligne Max Row.
+1 Vous avez raison, je ne savais pas que mySQL code> prend en charge une telle syntaxe.
MSSQL code> et
oracle code> ne ...