-- mysql分组排序取前N条记录的最简洁的单条sql。
use test;
drop table if exists test;
create table test (
id int primary key,
cid int,
author varchar(30)
) engine=myisam;
insert into test values
(1,1,'test1'),
(2,1,'test1'),
(3,1,'test2'),
(4,1,'test2'),
(5,1,'test2'),
(6,1,'test3'),
(7,1,'test3'),
(8,1,'test3'),
(9,1,'test3'),
(10,2,'test11'),
(11,2,'test11'),
(12,2,'test22'),
(13,2,'test22'),
(14,2,'test22'),
(15,2,'test33'),
(16,2,'test33'),
(17,2,'test33'),
(18,2,'test33');
--
select * from (select cid,author,count(*) as number from test group by cid,author) a
where
2>(
select count(*)
from (select cid,author,count(*) as number from test group by cid,author) b
where a.cid=b.cid and a.number<b.number
)order by cid,number desc;