给定一个如下所示的表格:
+---------------+----------+
|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 行。
...我希望它看起来像原来的结果...
这里有一个误解。表格没有固有的顺序。
简而言之,不存在“默认排序”或“有序表”之类的东西。您在 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;