本教程今天要講述一下關於,困擾使用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