gpt4 book ai didi

mysql - 使用 MySQL 进行有序分页

转载 作者:行者123 更新时间:2023-11-28 23:07:33 25 4
gpt4 key购买 nike

更新:在下面的问题中,我认为当您选择行时,MySQL 创建一种行索引,然后 LIMIT 和 OFFSET 子句根据其编号切断该列表。问题是我使用错误的值或字段组合对具有几乎相同值的行进行排序。

这是我的错误,假设 MySQL 有很多“智能”;-)

解决方案总是有一个更可靠的排序字段作为后备,比如ID,比如ORDER BY priority DESC, id ASC


这是一个严格的 MySQL 问题。为什么 LIMIT OFFSET 子句似乎在 ORDER BY 之前应用?或者我错过了什么?

这是示例,首先我们选择一个按名为优先级的字段排序的行列表:

SELECT d0_.name, d0_.id AS id_0, d0_.priority AS priority_1 FROM destination d0_ WHERE d0_.active = 1 ORDER BY d0_.priority DESC;

结果是这样的:

enter image description here

然后我想使用以下查询从此列表中选择前 10 行:

SELECT d0_.name, d0_.id AS id_0, d0_.priority AS priority_1 FROM destination d0_ WHERE d0_.active = 1 ORDER BY d0_.priority DESC LIMIT 10 OFFSET 10;

我得到了这个结果:

enter image description here

为什么列表没有从“Grandvalira”转到“Sierra nevada”?

这个问题,不是实际的顺序,而是一些行永远不会到达!像“Vallnord Ordino-Arcalís”。当我更改 OFFSET 值时,它并没有遍历所有行,而是重复了一些行。

这是基本问题。但这在最后使用 Symfony 的“KnpPaginatorBundle (2.5.3)”时给我带来了问题。我以为是 php 代码的问题,但 mysql 查询给出了我意想不到的结果。

有什么帮助或线索吗?

谢谢!

最佳答案

您没有得到预期的结果,因为您的数据有许多行具有相同的优先级值。

当您在优先级上使用“order by”时,所有具有优先级的行都可以按任何顺序出现。无法保证具有相同优先级值的排序。要解决平局,您可以向 order by 子句中添加其他字段。根据您的选择,您可能会选择在“order by”子句中包含名称或 ID 字段。

关于mysql - 使用 MySQL 进行有序分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46728776/

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