【发布时间】:2015-08-23 17:04:36
【问题描述】:
我想从第 n 行开始检索表中的所有行。
例如,如果表格有20行,n=9,我想检索所有元素,其中检索到的元素的第一部分是9到20的元素,第二部分是表格1到8。
[9,10,...,19,20,1,2,...,7,8].
起初,我认为我可以使用 LIMIT 和 OFFSET 使用 2 个查询来做到这一点。
//retrieve the 2nd group
SELECT * FROM Tname WHERE 1 LIMIT (Tsize-n+1) OFFSET (n)
//retrieve the 1st group
SELECT * FROM Tname WHERE 1 LIMIT (n-1)
我在计算 Tsize-n+1、n 和 n-1 之前和检索元素之后将这两个数组组合在一起。
但我不认为这是最佳解决方案(我不想使用多个查询。计算表中的元素数量很消耗)。
有没有更好的方法来做到这一点?
【问题讨论】:
-
所以你希望它是特殊顺序的所有结果?
-
为什么不选择所有行,读取前 n 行,然后读取到最后?
-
您是否尝试过使用
orderBy DESC? -
@Ahmad 真是个好主意:D,我认为这将是最好的答案!
-
@Yazan,这可能有点晚了,但看看我更新的答案,一个查询选择全部,php 用
krsort来反转排序顺序和array_chunk做剩下的事情其余的。