如果键是字符串,如何使用键集分页和排序

问题描述 投票:0回答:1

给定一个如下所示的表格:

+---------------+----------+
|title          |enabled   |
+---------------+----------+
|Four           |N         |
|Two            |N         |
|Three          |N         |
|One            |Y         |
|Five           |Y         |
|Six            |Y         |
+---------------+----------+

使用键集分页和启用排序,我如何才能使用标题作为键?

例如,使用

select title, enabled
from my_table
where title > 'Three'
order by enabled;

退货

+---------------+----------+
|title.         |enabled   |
+---------------+----------+
|Two            |N         |
+---------------+----------+

但这会删除标题按字母顺序位于

Three
之后的所有行,但我希望它看起来像原始结果并返回最后 3 行。

sql psql
1个回答
0
投票

...我希望它看起来像原来的结果...

这里有一个误解。表格没有固有的顺序。

简而言之,不存在“默认排序”或“有序表”之类的东西。您在 ANY ORDER 中获得了初始行,并且在没有 ORDER BY 子句的情况下,该顺序如有更改,恕不另行通知。

解决方案:在表中添加一个额外的列来存储您希望行显示的顺序。

例如:

+---------------+----------+----------+
|title          |enabled   | ordering |
+---------------+----------+----------+
|Four           |N         |  10      |
|Two            |N         |  20      |
|Three          |N         |  30      |
|One            |Y         |  40      |
|Five           |Y         |  50      |
|Six            |Y         |  60      |
+---------------+----------+----------+

然后,键集分页查询将如下所示:

select title, enabled
from my_table
where title > 'Three'
order by ordering;
© www.soinside.com 2019 - 2024. All rights reserved.