错误问题:查询账单记录列表,出现少一条订单,并且重复一条订单
伪代码如下:
SELECT
id
FROM
xxx
ORDER BY
updated_time DESC,
created_time DESC
LIMIT 0,10;
SELECT
id
FROM
xxx
ORDER BY
updated_time DESC,
created_time DESC
LIMIT 10,10;
导致原因是:在两个排序字段的值,都一致的情况下。order by 排序的顺序会随机选一个
在第一页第10位随机给了A开头的id,11位给了B开头的id
在第二页第10给了开头B的id,第11位给了A开头的id
导致丢了一条数据,重复了一条数据
解决方法:order by 排序给了一个唯一的值 ,例如主键id ,就不会让mysql 随机选一个
SELECT
id
FROM
xxx
ORDER BY
updated_time DESC,
created_time DESC,
id DESC
LIMIT 0,10;
SELECT
id
FROM
xxx
ORDER BY
updated_time DESC,
created_time DESC
LIMIT 10,10;