首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

mysql group by每个group返回3条记录。解决方法

2012-05-12 
mysql group by每个group返回3条记录。SQL codetags page_ida5a6a8a9a11a15b2b4c1c3 c12 c14c16d7d10d13d17

mysql group by每个group返回3条记录。

SQL code
tags page_ida     5a     6a     8a     9a     11a     15b     2b     4c     1c     3 c     12 c     14c     16d     7d     10d     13d     17


如何group by,每个group获取3条记录,如果少于3条的,有多少条返回多少条记录。
另外我想要效率高点的语句,因为我总计有40万条记录,大概占了6500个group。是否还需要建立相应的索引?谢谢。

SQL code
a     5a     6a     8b     2b     4    c     1c     3 c     12d     7d     10d     13


[解决办法]
SQL code
select tags ,page_id from (select tags ,page_id,(select count(1) from tb_name where a.tags = tags and page_id <= a.page_id) rnfrom tb_name a) twhere t.rn<=3;
[解决办法]
SQL code
select * from table1 twhere 3>(select count(*) from table1 where tags=t.tags and page_id<t.page_id)
[解决办法]


在tags, page_id上建立索引

SELECT * from ttl a where 3>=(select count(*) from ttl where a.tags=tags and a.page_id>=page_id)

or






SELECT a.tags, a.page_id from ttl a left join ttl b on a.tags=b.tags and a.page_id>=b.page_id
group by a.tags, a.page_id
having count(*)<=3

热点排行