mysql分頁查詢踩坑 查詢結果出乎你的意料

2021-10-06 00:23:54 字數 2533 閱讀 1286

結論:

mysql使用limit分頁查詢,當分頁臨界點的資料等於分頁條件時,可能兩頁內容會查到重複資料,並且會有資料丟失查詢不出來;

通過時間範圍查詢資料時,如果只查詢到23:59:59,會丟失1s的資料(23:59:59.000~23:59:59.999)

create table `color` (

`color_id` char(24) not null comment '顏色id',

`biz_code` varchar(20) default null comment '顏色名',

`color_name` varchar(20) default null comment '顏色名',

`color_value` varchar(25) default null comment '顏色值',

`create_time` datetime(3) not null default current_timestamp(3) comment '建立時間',

`update_time` datetime(3) not null default current_timestamp(3) on update current_timestamp(3) comment '更新時間',

`is_deleted` bit(1) default b'0' comment '刪除標誌',

`seq` int(2) default null,

primary key (`color_id`)

) engine=innodb default charset=utf8mb4;

insert into `test`.`color`(`color_id`, `biz_code`, `color_name`, `color_value`, `create_time`, `update_time`, `is_deleted`, `seq`) values ('1', '1', '1', '1', '2020-05-11 19:27:00.561', '2020-05-11 19:27:00.561', b'0', null);

insert into `test`.`color`(`color_id`, `biz_code`, `color_name`, `color_value`, `create_time`, `update_time`, `is_deleted`, `seq`) values ('2', '1', '1', '1', '2020-05-11 19:27:10.245', '2020-05-11 19:27:10.245', b'0', null);

insert into `test`.`color`(`color_id`, `biz_code`, `color_name`, `color_value`, `create_time`, `update_time`, `is_deleted`, `seq`) values ('3', '1', '1', '1', '2020-05-11 19:27:23.357', '2020-05-11 19:27:46.726', b'0', null);

insert into `test`.`color`(`color_id`, `biz_code`, `color_name`, `color_value`, `create_time`, `update_time`, `is_deleted`, `seq`) values ('4', '1', '1', '1', '2020-05-11 19:27:23.357', '2020-05-11 19:27:23.357', b'0', null);

insert into `test`.`color`(`color_id`, `biz_code`, `color_name`, `color_value`, `create_time`, `update_time`, `is_deleted`, `seq`) values ('5', '1', '1', '1', '2020-05-11 19:27:29.733', '2020-05-11 19:27:29.733', b'0', null);

-- 驗證結論1的查詢

select * from color order by create_time desc limit 0,2;

select * from color order by create_time desc limit 2,2;

-- 驗證結論2的查詢

select * from color where create_time between '2020-05-11 00:00:00' and '2020-05-11 23:59:59';

select * from color where create_time between '2020-05-11 00:00:00' and '2020-05-11 23:59:59.999';

select * from color where create_time between '2020-05-11 00:00:00' and '2020-05-12 00:00:00';

附言:雖然這些坑自己踩過,同事也踩過,但總是不能很快識別到,應多加記錄以增強記憶,避免以後再踩同樣的坑!!!當積累足夠多的時候,小小的問題也能展現你的大智慧型。

查詢結果分頁

以下摘自msdn 查詢結果分頁 dataadapter 提供了通過 fill 方法的過載來僅返回一頁資料的功能。但是,對於大量的查詢結果,它可能並不是首選的分頁方法,因為 dataadapter 雖然僅使用所請求的記錄來填充目標 datatable 或 dataset,但仍會使用返回整個查詢的資源。...

Oracle查詢結果分頁

分頁查詢是web開發中非常常用的功能,筆者主要使用oracle資料庫工作,所以只總結一下oracle中的分頁方法 通常是由下面語句就可以完成分頁功能 select x.from select z.rownum rn from xzqh z where rownum 101 x where x.rn ...

Mysql 分頁查詢 快照 Mysql分頁查詢優化

select from orders history where type 8 limit 1000,10 該條語句將會從表 orders history 中查詢offset 1000開始之後的10條資料,也就是第1001條到第1010條資料 1001 id 1010 資料表中的記錄預設使用主鍵 一...