【发布时间】:2019-11-27 21:17:32
【问题描述】:
我正在尝试在使用键集分页(搜索分页)进行分页时进行排序。但是,其中一个字段不是唯一的,只能是真/假 (0/1)。在键集分页中,您从一个查询中获取最后一个 id,并将其用于下一页,对吗?我将如何处理这种情况?
我开始:
select * from foo order by admin desc, name asc limit 3
返回
admin name
1 a
1 b
1 c
然后我应该再做一次查询,只用参数
select * from foo where (admin, name) > ('1', 'c') order by admin desc, name asc limit 3
然而这什么也没返回!
我怎样才能解决这个问题,让它带来?
admin name
0 a
0 d
0 x
以下数据以获得更好的背景:
我有这张桌子
foo(
name varchar
admin varchar(1) (0 or 1)
);
我有这个数据
admin name
1 a
1 b
1 c
0 a
0 d
0 x
当我运行这个查询时
SELECT * from foo
order by admin desc, name asc
有这个索引
b-tree(admin desc, name asc)
【问题讨论】:
-
我认为这很完美,问题在于混合排序(DESC 和 ASC),因此了解 (admin, name) > (a, b) 的真正含义至关重要。 SELECT (*) FROM foo WHERE ((admin 'c')) ORDER BY admin desc, name asc 这是修复它的调整查询
标签: sql database postgresql indexing