mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录
SELECT A.* FROM test A,
(SELECT aid, MAX(day) max_day FROM test GROUP BY aid) B
WHERE A.aid = B.aid AND A.day = B.max_day
ORDER BY a.install DESC
以下是 test 表,测试sql
CREATE TABLE IF NOT EXISTS `test` (
`id` int(10) unsigned NOT NULL auto_increment,
`install` int(10) unsigned NOT NULL,
`day` int(10) unsigned NOT NULL,
`aid` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
INSERT INTO `test` (`id`, `install`, `day`, `aid`) VALUES
(1, 1232, 20080808, 1),
(2, 2321, 20080809, 2),
(3, 1236, 20080810, 3),
(5, 4212, 20080809, 1),
(6, 2312, 20080810, 1),
(7, 1432, 20080811, 1),
(8, 2421, 20080808, 2),
(9, 4245, 20080811, 2),
(10, 5654, 20080810, 2),
(11, 412, 20080808, 3);
http://download.farsight.com.cn/download/pdf/Farsight090607-android.pdf
分享到:
相关推荐
–按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...
在MySQL中实现分组并获取每组中的特定数量的最大记录是一项常见的需求,尤其是在处理大量数据时。例如,在上述示例中,我们希望基于`resid`进行分组,并且对于每个组,我们要找出前两条具有最高`pscore`和次高的`...
这是因为`GROUP BY`语句会先对数据进行分组,然后在每个组内应用`ORDER BY`,但结果只会返回每个组的第一个出现的记录,而不是根据排序后的第一条记录。 解决这个问题的一种方法是通过创建一个已排序的临时表,然后...
在MySQL数据库中,有时我们需要对数据进行分组处理,并从每个分组中随机选取一条记录。这在统计分析或者抽样调查等场景中非常常见。本文将详细介绍如何在MySQL中实现这一操作,以及一些关于随机选取数据的优化方法。...
昨天有个需求对数据库的数据进行去重排名,同一用户去成绩最高,时间最短,参与活动最早的一条数据进行排序。我们可以利用MySQL中的group by的特性。 MySQL的group by与Oracle有所不同,查询得字段可以不用写聚合...
以下将详细讨论三种在MySQL中使用GROUP BY分组获取前N条记录的方法。 ### 方法一:LEFT JOIN + HAVING子句 这种方法利用LEFT JOIN和HAVING子句来找出每个分组内的前两名学生。首先,将原始表与自身进行LEFT JOIN,...
这个查询逻辑可以这样理解:对于每一条记录,我们检查它在分组内的排名。如果在它的分组内有更小的数值(num更小),我们就增加计数。如果计数小于3,说明这条记录在其分组内排名前3,因此在外层查询中被保留下来。...
在MySQL中,获取分组后每组的最大值是一项常见的数据分析任务,这通常涉及...这不仅能确保每个分组只返回一条记录,而且返回的是该分组内分数最高的记录。在实际应用中,要根据数据库的特性和需求选择合适的查询方式。
3. **只显示一条重复内容**:若要保留重复数据中的某一条,可以选择其中的一个特定记录,比如按ID排序后的第一条或者最后一条。以下是一种方法,保留`id`最小的重复记录: ```sql SELECT t1.* FROM ( SELECT ...
标题“分组并排序取前N”涉及到数据库查询中的一个重要概念,这通常指的是在SQL查询中使用`GROUP BY`、`ORDER BY`以及`LIMIT`子句来对数据进行分组、排序,并提取出每组中排名靠前的N条记录。在数据库管理中,这种...
总结来说,通过`GROUP BY`,`GROUP_CONCAT`和`SUBSTRING_INDEX`的组合,我们可以有效地在MySQL中获取每个`userid`的最后一条记录。这种技巧在日志分析、活动追踪或其他需要获取最新状态的场景中非常实用。了解并掌握...
在MySQL数据库中,查询最近一条记录通常涉及到时间戳或者某个排序字段。本文主要探讨了三种不同的SQL语句来实现这一目标,从效率低下的方法到更优化的解决方案,特别是针对大量数据的情况。 首先,最简单但效率最低...
在MySQL中,有时候我们需要从一个表中为每个用户获取一条记录,这通常涉及到对数据进行分组并选择每个组中的特定记录。以下是对三种不同方法的详细解释,这些方法可以帮助你在MySQL中实现这一目标。 **1. 先排序后...
在MySQL 5.6中,你可以使用一个子查询来排序并获取每个分组的第一条记录,如下所示: ```sql SELECT SwipeID, MemberID, AddTime FROM (SELECT * FROM front_membercardswipe fmcs ORDER BY fmcs.AddTime ASC) a ...
在数据的增删改查操作方面,添加数据可以通过INSERT命令实现,为表的所有字段或指定字段添加数据,也可以一次性添加多条记录。更新数据使用UPDATE命令,删除数据则使用DELETE命令。 单表查询部分涉及了简单查询、...
如果`OFFSET`省略,它默认为0,即从第一条记录开始。 `DISTINCT`关键字用于去除查询结果中的重复记录。它会返回所有不同值的集合,即使在多个字段中存在相同值的记录,只要有一个字段的值不同,就不会被视为重复。...
例如,如果有一个时间戳字段`time_str`记录了每条记录的产生时间,我们可以通过以下SQL语句按照每10分钟为一个时间单位进行统计: ```sql SELECT ROUND(UNIX_TIMESTAMP(time_str)/(10*60)) AS time_key, COUNT(*)...