Maison >base de données >tutoriel mysql >MySQL obtient le dernier enregistrement après le regroupement
Comme le titre, j'ai également trouvé des solutions similaires sur Internet. La plupart des réponses ressemblent à cette instruction SQL :
select Id,AccountId,Mark,max(CreateTime) comme Dernier de AccountMark en tant que groupe b par AccountId
en utilisant la fonction Max
. Mais il semble y avoir quelque chose qui ne va pas dans les données que j'ai trouvées. Comme le montre l'image, dans les données en surbrillance, le champ Mark et le champ CreateTime ne correspondent pas du tout !
Que se passe-t-il ? Est-il fiable de regrouper
dans après avoir utilisé la fonction Max ?
Il existe une autre instruction : sélectionnez *,COUNT(AccountId) comme Num from
(sélectionnez * dans l'ordre AccountMark par CreateTime desc) `temp`
groupe par AccountId ordre par CreateTime desc
Les données trouvées de cette manière sont correctes
Cependant, je dois créer une
vue, et les requêtes ne sont pas autorisées dans la vue dans Clause Mysql . Quelqu'un peut-il me fournir une instruction SQL capable de détecter les données correctes sans qu'aucune clause n'apparaisse ? Merci!
Solution :
sélectionnez * dans AccountMark comme b là où il n'existe pas (sélectionnez 1 dans AccountMark où AccountId= b.AccountId et b.CreateTime
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!