亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在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 關注
  • 7730 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號