本教程今天要讲述一下关于,困扰使用mysql教程数据库教程的朋友的一个常见的问题,mysql group by 先排序与分组同时使用方法,下面看实例。php
看排序html
select * from (select * from posts order by dateline desc) group by tid order by dateline desc limit 10mysql
这样效率应该高点。取消了order by 的filesort过程。sql
select * from t where logtime in (select max(logtime ) from t group by username)
也有网友利用自链接实现的 ,这样的效率应该比上面的子查询效率高,不过,为了简单明了,就只用这样一种了,group by没有排序功能,多是mysql弱智的地方,也许是我尚未发现数据库
--
-- 表的结构 `test`
--post
create table if not exists `test` (
`id` int(11) not null auto_increment,
`name` varchar(16) not null,
`month` int(11) not null,
`serial` int(11) not null,
`other` varchar(20) not null,
primary key (`id`)
) engine=myisam default charset=utf8;spa
--
-- 导出表中的数据 `test`
--.net
insert into `test` (`id`, `name`, `month`, `serial`, `other`) values
(1, 'a', 200807, 2, 'aaa1'),
(2, 'a', 200805, 2, 'aaa2'),
(3, 'b', 200805, 3, 'bbb3'),
(4, 'b', 200805, 4, 'bbb4'),
(5, 'a', 200805, 1, 'aaa5'),
(6, 'c', 200807, 5, 'ccc6'),
(7, 'b', 200807, 8, 'bbb7'),
(8, 'c', 200807, 3, 'ccc8'),
(9, 'a', 200805, 6, 'aaa9');orm
查询
select * from (select * from test order by month desc,serial desc) t group by name
获得
id name month serial other
1 a 200807 2 aaa1
7 b 200807 8 bbb7
6 c 200807 5 ccc6
换一下排序方式
select * from (select * from test order by month asc,serial desc) t group by name
获得
id name month serial other
9 a 200805 6 aaa9
4 b 200805 4 bbb4
6 c 200807 5 ccc6
都按咱们的要求显示告终果htm