【发布时间】:2016-10-27 06:56:23
【问题描述】:
我有一些表,我想使用基于游标的分页来查询,但它需要申请多个列。
让我们举一个使用 2 列的简化示例 - 我这样获取第一页:
SELECT column_1, column_2
FROM table_name
ORDER BY column_1, column_2
LIMIT 10
得到结果后,我可以根据最后一行获取下一页。假设最后一行是column_1 = 5, column_2 = 8。我想做这样的事情:
SELECT column_1, column_2
FROM table_name
WHERE column_1 > 5 AND column_2 > 8
ORDER BY column_1, column_2
LIMIT 10
但这显然是错误的。它将过滤掉具有column_1 = 5, column_2 = 9 的行(因为column_1 上的过滤器)或具有column_1 = 6, column_2 = 6 的行(因为column_2 上的过滤器)
我可以这样做来避免这个问题:
SELECT column_1, column_2
FROM table_name
WHERE column_1 > 5
OR (column_1 = 5 AND column_2 > 8)
ORDER BY column_1, column_2
LIMIT 10
但是对于超过 2 列,这变得非常麻烦且容易出错...
另外,我的用例包括多种类型的列(INT UNSIGNED 和 BINARY),但都具有可比性
你有什么建议吗?
谢谢!
【问题讨论】:
-
不。你被那个复杂的
WHERE困住了。但它是有效的。另见mysql.rjweb.org/doc.php/…
标签: mysql pagination