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;

发布了35 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/colby_chenlun/article/details/100132641