mysql分页查询遇到order by发生的血案

案发现场

业务需求:mysql从一张表中查询数据进行分页暂时,要求按照某字段进行排序。
做开发的同学都觉得这兼职就是小case啦,前端传入分页下标、分页大小、排序字段、排序方式。后端采用order by +limit就搞定了。
事实上我也是这么做的,但是最后却出了个出乎意料的bug,同样的请求参数,返回的数据顺序居然不一样,分页的时候,第一页的数据居然重复出现在第二页。并且bug不是必然复现,重复数据每次一样。
在这里插入图片描述

场景复现

  1. 准备一张表,并插入几条数据:

    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 (

猜你喜欢

转载自blog.csdn.net/m0_67390963/article/details/125193926