我希望这是可能的。
我有张桌子:

我希望每5行解析它,并按分数排序,所以当我这样做时:
SELECT * FROM test ORDER BY score ASC LIMIT 5结果是:

现在,假设有人用id 11 and score 2添加了一个新项目,然后我就添加了:
SELECT * FROM test ORDER BY score ASC LIMIT 5, 5
要获得剩余的行,我将再次接收id 7
我怎么才能防止这种情况?因此,在id 7之后获取其余的项
发布于 2019-10-16 17:27:37
如果您使用ORDER BY score, id,那么您应该能够使用过滤代替。
SELECT *
FROM test
WHERE (score = lastScoredDisplayed AND id > lastIdDisplayed) -- Continue with last score
OR score > lastScoreDisplayed -- continue on to next score
ORDER BY score, id
LIMIT 5;其中lastScoreDisplayed和lastIdDisplayed是上一次查询的最后一行的值。
这种技术甚至可以比LIMIT x, x技术更快;LIMIT x, x每次都必须对整个数据集进行排序,而这种技术最终得到的集合越小。
https://stackoverflow.com/questions/58418180
复制相似问题