如何在Legacy SQL中对结果进行分页

时间:2018-03-20 10:58:59

标签: google-bigquery legacy-sql

我们正在针对特定请求使用旧版SQL。出于某些内部原因,我们无法使用标准SQL。

我们想对结果进行分页,因为我们有很多行。像那样:

SELECT ... FROM ... LIMIT 10000 30000 // In standard SQL

但在Legacy SQL Offset中不存在。那么如何做同样的工作?

编辑:

我不想订购。我想分页。例如,在跳过2000行后获得1000行。带有偏移量的简单LIMIT子句,如传统SQL数据库或BigQuery Standard SQL中的类似。 为此,我想使用Big Query Legacy SQL。

1 个答案:

答案 0 :(得分:3)

您所谈论的分页是通过tabledata.list API

完成的

根据您的问题和后续评论 - 这可能是您前进的方式。即使它不涉及查询。在您选择的客户端中使用API​​或相关方法 pageToken参数允许您翻页结果
顺便说一句,这种方法的另一个好处 - 它是免费的

如果您仍需要通过查询进行分页 - 您选择使用ROW_NUMBER() 在这种情况下 - 您可以使用以下查询

在临时表中准备数据
SELECT <needed fields>, ROW_NUMBER() OVER() num
FROM `project.dataset.table`

然后,您可以使用num

进行分页
SELECT <needed fields>
FROM `project.dataset.temp`
WHERE num BETWEEN 10000 AND 30000