相同company_id最多显示3条记录
表结构如下:
id name company_id
1 a 1
2 b 1
3 c 1
4 d 1
5 e 2
6 f 2
7 g 2
8 h 2
9 i 2
10 j 3
想要的结果
id name company_id
1 a 1
2 b 1
3 c 1
5 e 2
6 f 2
7 g 2
10 j 3
表结构如下:
id name company_id
1 a 1
2 b 1
3 c 1
4 d 1
5 e 2
6 f 2
7 g 2
8 h 2
9 i 2
10 j 3
想要的结果
id name company_id
1 a 1
2 b 1
3 c 1
5 e 2
6 f 2
7 g 2
10 j 3
select a.* from tablename a left join tablename b
on a.company_id=b.company_id and a.id>=b.id
group by a.id,a.name,a.company_id
having count(b.id)<=3
order by a.company_id,a.id;
[征集]分组取最大N条记录方法征集...
5M / 20K
然后 "相同company_id最多显示3条记录 " 也就是要输出 20K*3 = 60 K条记录。速度很难快啊。
先添加复合索引 (company_id ,id) ,这样可以提高一部分效率。