我知道如何查询前十条记录:
SELECT name, score FROM mytable ORDER BY score DESC LIMIT 10
但是如果我想要第二好的(或n-最好的) 10呢?我想我可以这样做
SELECT name, score FROM(
SELECT name, score FROM mytable ORDER BY score DESC LIMIT 20)
ORDER BY score ASC LIMIT 10
但这似乎是不必要的低效。有没有更常用的返回方式,比方说第11行到第20行?(我更熟悉Pandas,在那里我会用索引来做这件事。)
用例是,我想从表的中间导出数据,但它太大了,无法从顶部开始下载所有数据
发布于 2019-10-02 14:39:43
ORDER BY
也接受OFFSET
子句。下面是一个你可以尝试的例子:
WITH T AS (
-- Returns x values of 1 to 100
SELECT x
FROM UNNEST(GENERATE_ARRAY(1, 100)) AS x
)
SELECT x
FROM T
ORDER BY x LIMIT 10 OFFSET 10;
这将根据排序顺序返回第11到20行。您可以尝试更改限制或偏移,以查看不同的结果。
https://stackoverflow.com/questions/58203606
复制