业务需求:mysql从一张表中查询数据进行分页暂时,要求按照某字段进行排序。
做开发的同学都觉得这兼职就是小case啦,前端传入分页下标、分页大小、排序字段、排序方式。后端采用order by +limit就搞定了。
事实上我也是这么做的,但是最后却出了个出乎意料的bug,同样的请求参数,返回的数据顺序居然不一样,分页的时候,第一页的数据居然重复出现在第二页。并且bug不是必然复现,重复数据每次一样。
准备一张表,并插入几条数据:
CREATE TABLE t1
(
id
int NOT NULL AUTO_INCREMENT,
str1
varchar(16) DEFAULT NULL,
str2
varchar(16) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO t1
(id
, str1
, str2
) VALUES (‘1’, ‘str1:100010736’, ‘0-0-1’);
INSERT INTO t1
(