gpt4 book ai didi

mysql - 为什么偏移量改变了,结果是一样的?

转载 作者:行者123 更新时间:2023-11-29 21:34:43 25 4
gpt4 key购买 nike

当我执行查询时

select * from broker_commission_rate 
where broker_commission_rate.deleted_at is null
order by settlement_at asc limit 20 offset 520

我得到的结果以 id 560 开头,以 id 584 结尾。

当我将偏移量从 520 更改为 540 时,我得到了相同结果集。

select * from broker_commission_rate 
where broker_commission_rate.deleted_at is null
order by settlement_at asc limit 20 offset 540

将order by子句更改为order by adjustment_at asc,id asc,结果集发生变化。

我想知道为什么 offset 在此 SQL 中不起作用?预先感谢您。

<小时/>

表定义:

CREATE TABLE `broker_commission_rate` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sn` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`broker_uid` int(11) NOT NULL DEFAULT '0' ,
`broker_type` int(11) NOT NULL DEFAULT '0' ,
`broker_level` int(11) NOT NULL DEFAULT '0',
`employee_id` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
`type` tinyint(4) NOT NULL DEFAULT '0' ,
`rate` int(11) NOT NULL DEFAULT '0' ,
`price` decimal(8,2) NOT NULL DEFAULT '0.00' ,
`broker_price` decimal(8,2) NOT NULL DEFAULT '0.00' ,
`settlement_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `broker_commission_rate_sn_index` (`sn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

系统信息:

Mysql 5.6.20 @ Linux x85_64

最佳答案

偏移确实有效!

正如您所说,当您更改 order by 子句时,它会返回准确的数据集。这意味着您的订单条件不正确。

您按 settlement_at 排序,此列中可能存在重复值,因此当您添加另一个按 id 排序的条件时。效果很好。

它的运行方式如下:如果settlement_at相同,则查找id进行排序。

所以你的最终查询应该是:

select * 
from broker_commission_rate
where broker_commission_rate.deleted_at is null
order by settlement_at asc, id asc
limit 20 offset 540

关于mysql - 为什么偏移量改变了,结果是一样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35011709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com