MySQL order by 和 limit 做分页时,数据重复的问题

20-08-24 13:43 字数 756 阅读 1808

有一SQL如下

SELECT
    cu.monthly_clearplate_num,
    cu.clearplate_num,
    gr.user_id 
FROM
    `group_users_relation` AS gr
    LEFT JOIN `clearplate_users` AS cu ON cu.user_id = gr.user_id 
WHERE
    gr.group_id = 236 
    AND gr.STATUS = 1 
ORDER BY
    cu.monthly_clearplate_num DESC
    LIMIT 0,
    10;

如果 order by 后面只有一个字段,那么在几条数据这个字段都一样的情况下,mysql 会随机给你返回数据,所以如果 order by 的一个字段有可能相同,那么需要再加一个不会重复的字段,如在上面的demo中,可以再添加一个 user_id 来保证分页时数据不会重复。

SELECT
    cu.monthly_clearplate_num,
    cu.clearplate_num,
    gr.user_id 
FROM
    `group_users_relation` AS gr
    LEFT JOIN `clearplate_users` AS cu ON cu.user_id = gr.user_id 
WHERE
    gr.group_id = 236 
    AND gr.STATUS = 1 
ORDER BY
    cu.monthly_clearplate_num DESC,user_id DESC
    LIMIT 0,
    10;
1人点赞>
关注 收藏 改进 举报
2 条评论
排序方式 时间 投票
kittyfamous

没碰到过这种问题。可能我开发的应用少吧。

Up骚年
遇到这样的需求注意一下就好。
请登录后发表评论
站长 @ 十七度
文章
384
粉丝
23
喜欢
195
收藏
31
排名 : 1
访问 : 147.83万
私信