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

有一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;

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

遇到这样的需求注意一下就好。