mysql实现分组后组内排序

-- 大体的思路 定义参数 根据某列的值是否相同来计数 基数为1 每有一个相同的基数+1
select 
    scene_code,
    `key`,
    value,
    row_num
from (
    select
        scene_code,
        `key`,
        value,
        -- bak赋值为scene_code 当仅存在一个时为1 多个累加rownum 其中row_num 列别名
        IF(@bak=scene_code,@rownum:=@rownum+1,@rownum:=1) as row_num, @bak:=scene_code
    from(
        select
            scene_code,
            `key`,
            value
        from rop_com_scm_detail_config 
        -- 此处的order列必须与参数bak赋值列对应一致才分组 组内排序生效
        order by scene_code asc, value desc 
        ) a , 
        -- 参数定义 一个rownum 一个bak
        ( select @rownum:=0,@bak:='') b
) c

 

posted @ 2021-11-02 14:29  ID_小汤  阅读(885)  评论(0编辑  收藏  举报