mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录

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);

时间: 2024-10-17 22:57:35

mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录的相关文章

mysql 分组group by排序取每条记录中,时间最大的一条记录

mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录 以下是 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

mysql使用GROUP BY分组实现取前N条记录的方法_Mysql

本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法.分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 复制代码 代码如下: SELECT a.id,a.SName,a.ClsNo,a.Score FROM aa a LEFT J

mysql查询如何先排序再分组呢?纠结了好几天了。

问题描述 mysql查询如何先排序再分组呢?纠结了好几天了. 比如数据表"article"中有一组这样的数据: id uid title... .... .....375 1 文章标题1376 1 文章标题2377 1 文章标题3378 2 asdfasdf379 3 fdaewqwe... .... ..... 然后我写了一句这样的sql:select * from article order by id desc执行后,结果如下: id uid title... .... ....

关于MySQL与SQLLite的Group By排序原理的区别

当我们对一个表的记录进行group by的时候,在未明确使用sum.min.max等聚合函数的时候,group by 的排序规则,如下对比了MYSQL和SQLLite 大家都知道,group by的时候,数据库是遍历数据库表的所有记录进行匹配处理的. 下面的SQL目的是为了查询表中groupid相同的记录中,最新时间的一条消息,给出mysql和sqllite的语句区别: MYSQL语句 SELECT * FROM( SELECT t.id,t.data_id,t.send_username,t.

MySQL分组查询Group By实现原理详解_Mysql

由于GROUP BY 实际上也同样会进行排序操作,而且与ORDER BY 相比,GROUP BY 主要只是多了排序之后的分组操作.当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函数的计算.所以,在GROUP BY 的实现过程中,与 ORDER BY 一样也可以利用到索引. 在MySQL 中,GROUP BY 的实现同样有多种(三种)方式,其中有两种方式会利用现有的索引信息来完成 GROUP BY,另外一种为完全无法使用索引的场景下使用.下面我们分别针对这三种实现方式做一个分

Oracle和MySQL分组查询GROUP BY

Oracle和MySQL分组查询GROUP BY 真题1.Oracle和MySQL中的分组(GROUP BY)有什么区别?答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段必须在GROUP BY后边出现,否则会报错:"ORA-00979: not a GROUP BY expression".而MySQL则不同,如果SELECT出来的字段在GROUP BY后面没有出现,那么会随机取出一个值,而这样查询出来的数据不准确,语义也不明确.所以,作者建议在写SQL语句

分组排序取次数

原文:分组排序取次数 函数 row_number() row_number() over (partition by patient_id /*需要分组的列*/ order by zyid /*排序的列*/) sqlSELECT ZYID, patient_id ,row_number() over (partition by patient_id order by zyid) visit_id from jk_patient_in_hospital oracle create or repla

mysql 数据库-关于mysql关联多列查询,分组查询并输出每组数据的中值

问题描述 关于mysql关联多列查询,分组查询并输出每组数据的中值 imei phone key value 863184021544828 lenovoa788t c14 484 355799050650579 samsungi9500 c14 542 355799050650579 samsungi9500 c14 623 868331013987821 huaweiu9508 c14 523 868331013987821 huaweiu9508 c14 498 8683310139878

数据统计-请问如何实现下面的mysql分组查询(新学关系数据库感觉有点复杂所以求教)

问题描述 请问如何实现下面的mysql分组查询(新学关系数据库感觉有点复杂所以求教) 查找ip不为127.0.0.1的某个时间段内的数据(比如在2016-03-15 00:00:00至2016-03-15 23:59:59) 按照每5分钟一条分组(0-5,5-10一共288组数据) 再对每组数据按照uid去重 最后求得每一组的数量 解决方案 SELECT FLOOR(UNIX_TIMESTAMP(addTime) / (5 * 60)) time, COUNT(DISTINCT uid) FRO