gpt4 book ai didi

sql - PostgreSQL - 从 LIMIT OFFSET 重复行

转载 作者:行者123 更新时间:2023-11-29 11:08:01 26 4
gpt4 key购买 nike

我注意到分页记录集中有一些重复行。

当我运行这个查询时:

SELECT "students".* 
FROM "students"
ORDER BY "students"."status" asc
LIMIT 3 OFFSET 0

我得到:

    | id | name  | status |
| 1 | foo | active |
| 12 | alice | active |
| 4 | bob | active |

下一个查询:

SELECT "students".* 
FROM "students"
ORDER BY "students"."status" asc
LIMIT 3 OFFSET 3

我得到:

    | id | name  | status |
| 1 | foo | active |
| 6 | cindy | active |
| 2 | dylan | active |

为什么“foo”出现在两个查询中?

最佳答案

Why does "foo" appear in both queries?

因为返回的所有行的 status 列都具有相同的值。在这种情况下,数据库可以按照它想要的任何顺序自由返回行。

如果您想要可重现的排序,您需要在 order by 语句中添加第二列以使其保持一致。例如。 ID 列:

SELECT students.* 
FROM students
ORDER BY students.status asc,
students.id asc

如果两行的 status 列的值相同,则它们将按 id 排序。

关于sql - PostgreSQL - 从 LIMIT OFFSET 重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13580826/

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