为了账号安全,请及时绑定邮箱和手机立即绑定

在GROUP BY中使用LIMIT来获得每组N个结果?

在GROUP BY中使用LIMIT来获得每组N个结果?

12345678_0001 2019-05-24 13:40:26
在GROUP BY中使用LIMIT来获得每组N个结果?以下查询:SELECTyear, id, rateFROM hWHERE year BETWEEN 2000 AND 2009AND id IN (SELECT rid FROM table2)GROUP BY id, yearORDER BY id, rate DESC收益率:year    id  rate2006    p01 82003    p01 7.42008    p01 6.82001    p01 5.92007    p01 5.32009    p01 4.42002    p01 3.92004    p01 3.52005    p01 2.12000    p01 0.82001    p02 12.52004    p02 12.42002    p02 12.22003    p02 10.32000    p02 8.72006    p02 4.62007    p02 3.3我想要的只是每个id的前5个结果:2006    p01 82003    p01 7.42008    p01 6.82001    p01 5.92007    p01 5.32001    p02 12.52004    p02 12.42002    p02 12.22003    p02 10.32000    p02 8.7有没有办法使用在GROUP BY中工作的某种LIMIT修饰符来做到这一点?
查看完整描述

4 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

对我来说就像

SUBSTRING_INDEX(group_concat(col_name order by desired_col_order_name), ',', N)

工作得很好。没有复杂的查询。


例如:每组获得前1名

SELECT 
    *FROM
    yourtableWHERE
    id IN (SELECT 
            SUBSTRING_INDEX(GROUP_CONCAT(id                            ORDER BY rate DESC),
                        ',',
                        1) id        FROM
            yourtable        GROUP BY year)ORDER BY rate DESC;


查看完整回答
反对 回复 2019-05-24
  • 4 回答
  • 0 关注
  • 7704 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号