tel que j'ai une table comme:
Je veux obtenir le plus haut élève de chaque classe. Comment puis-je faire? P>
select *
from (select *
from stu
order by height desc)
group by class_id
3 Réponses :
select *
from stu s
where height = (select max(height) from stu s1
where s1.class_id = s.class_id
group by class_id)
Here is a demo
SELECT t1.*
FROM stu t1
JOIN ( SELECT class_id, MAX(height) height
FROM stu
GROUP BY class_id ) t2 USING (class_id, height)
If more than one student have the same maximal height over a class then all of them will be returned.
Vous avez besoin d'une sous-requête pour une hauteur maximale et de rejoindre
select * from stu inner join ( select class_id , max(height) max_class_height from stu group by class_id ) t on t.class_id = stu.class_id and t.max_class_height = stu.height
Vous avez besoin de 2 copies de la table - on est utilisée pour obtenir la valeur de hauteur la plus élevée dans la sous-requête et la seconde pour obtenir l'enregistrement entier qui correspond à cette valeur.
Cela ne fonctionne pas car il est cassé SQL.
SELECT * CODE> avecGroupe par code> n'a pas de sens et renvoie une erreur dans presque toutes les bases de données, y compris les versions les plus récentes de MySQL.