Mysql实现数据库row_number()的写法

以下是固定的写法,实现其他逻辑按这个套路写就好,将字段替换成你想分组查询的字段即可

rank跟row_number()一样,过滤分组排序后的数据

SELECT id, name, create_time, rank
FROM (
    SELECT b.id, b.name, b.create_time
        , @rownum := @rownum + 1
        , IF(@pdept = b.bar_code, @rank := @rank + 1, @rank := 1) AS rank
        , @pdept := b.bar_code
    FROM (
        SELECT id, name, create_time FROM tablename
        GROUP BY id,name
        ORDER BY id, name
    ) b, (
            SELECT @rownum := 0, @pdept := ''
                , @rank := 0
        ) c
) result
HAVING rank < 2;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章