相同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   

解决方案 »

  1.   


    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;
      

  2.   

    可以参考下贴。http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集...
      

  3.   

    在百万级表里有好的解决方法吗?假设记录 五百万 条,你不同的 company_id    有多少?
      

  4.   

    记录 五百万 条 中 不同的 company_id   两万
    5M / 20K
    然后 "相同company_id最多显示3条记录  " 也就是要输出 20K*3 = 60 K条记录。速度很难快啊。
    先添加复合索引 (company_id ,id) ,这样可以提高一部分效率。
      

  5.   

    找找我之前发的FAQ。里面有例子!