[转]Mysql将数据分组后取出时间最近的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转]Mysql将数据分组后取出时间最近的数据相关的知识,希望对你有一定的参考价值。

如题,我在网上也找过相关解决方法,很多解答都是这么一句SQL语句:
select Id,AccountId,Mark,max(CreateTime) as Latest from AccountMark as b group by AccountId 

使用Max函数。但是在我查出来的数据中似乎有些不对,如图,反白的那一条数据,Mark字段和CreateTime字段根本不对应啊!

技术分享技术分享

这是怎么回事?使用Max函数后在分组这样靠谱吗?

还有一条语句:select *,COUNT(AccountId) as Num from 
(select * from AccountMark order by CreateTime desc) `temp`  
group by AccountId order by CreateTime desc 
这样查出来的数据是对的
技术分享

但是,我需要创建视图,mysql中视图里不允许出现查询子句。求大神些一条SQL语句,能实现既不出现子句,又能查出正确数据。谢谢!

 

解决方法

select * from AccountMark as b where not exists(select 1 from AccountMark where AccountId= b.AccountId
and b.CreateTime<CreateTime )

 

原文地址:http://bbs.csdn.net/topics/390958705

















以上是关于[转]Mysql将数据分组后取出时间最近的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从数据库(oracle,mysql)中取出根据ID分组后,时间最大的数据

mysql分组后,取每组的前3条数据(并且有顺序)

我如何分组,排序和取出mysql中的第一个N?

MySQL 对分组后的同类数据进行拼接字符串

oracle开展分组后,取出每组的前几条数据

mysql group by 的用法,集合后取出指定的字段