我有一个返回10个大项列表的查询。例如:
SELECT * FROM users
WHERE user_is_block = 0
AND user_is_paid = 1
ORDER BY user_post_hour ASC, id ASC"
当我每次都让limit ?, ?
获取此列表的一部分时,就会出现问题。想象一下,我们得到第一个10.具有id 11的行是下一个请求中的第一行。但是当我们使用ORDER BY user_post_hour
时,id 11可能会上升并变为10.因此,当发送第二个请求时,我们永远不会看到id 11。
有什么想法吗?
答案 0 :(得分:0)
这可能是数据类型soring的问题,再次将列值明确地转换为整数
SELECT * FROM users
WHERE user_is_block = 0
AND user_is_paid = 1
ORDER BY cast(user_post_hour as unsigned) ASC, id ASC
使用此技巧。
SELECT * FROM users
WHERE user_is_block = 0
AND user_is_paid = 1
ORDER BY user_post_hour+0 ASC, id ASC