求一SQL语句,同一字段相同值的记录最多显示3条记录(MYSQL)

mkman 2010-03-31 12:34:18
相同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
...全文
562 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
懒得去死 2010-04-07
  • 打赏
  • 举报
回复
找找我之前发的FAQ。里面有例子!
郑燕辉 2010-04-04
  • 打赏
  • 举报
回复
我也有这样的问题
看看有没有解决哦
yangxiao_jiang 2010-04-01
  • 打赏
  • 举报
回复
如果不要求时时的,最准确的,可以找个没人用的时间,比如凌晨3点,让数据库跑一次,把记录保存到一个表里,需要的时候,在表中拿数据。
mkman 2010-03-31
  • 打赏
  • 举报
回复
看来唯有另寻途径了
mkman 2010-03-31
  • 打赏
  • 举报
回复
这是很头痛的事情
ACMAIN_CHM 2010-03-31
  • 打赏
  • 举报
回复
记录 五百万 条 中 不同的 company_id 两万
5M / 20K
然后 "相同company_id最多显示3条记录 " 也就是要输出 20K*3 = 60 K条记录。速度很难快啊。
先添加复合索引 (company_id ,id) ,这样可以提高一部分效率。
mkman 2010-03-31
  • 打赏
  • 举报
回复
最多一两万
ACMAIN_CHM 2010-03-31
  • 打赏
  • 举报
回复
在百万级表里有好的解决方法吗?

假设记录 五百万 条,你不同的 company_id 有多少?
mkman 2010-03-31
  • 打赏
  • 举报
回复
在百万级表里有好的解决方法吗?
ACMAIN_CHM 2010-03-31
  • 打赏
  • 举报
回复
可以参考下贴。

http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
[征集]分组取最大N条记录方法征集...
阿_布 2010-03-31
  • 打赏
  • 举报
回复

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;
发帖
MySQL

5.6w+

社区成员

MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
帖子事件
创建了帖子
2010-03-31 12:34
社区公告
暂无公告