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> avec
Groupe 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.