如何在 Legacy SQL 中对结果进行分页
How to paginate results in Legacy SQL
我们根据特定请求使用旧版 SQL。由于某些内部原因,我们无法使用标准 SQL。
我们想对结果进行分页,因为我们有很多行。像这样:
SELECT ... FROM ... LIMIT 10000 30000 // In standard SQL
但在 Legacy SQL 中不存在偏移量。那么如何做同样的工作呢?
编辑:
我不想点菜。我想分页。例如跳过 2000 行后得到 1000 行。带有偏移量的简单 LIMIT 子句,如传统 SQL 数据库或 BigQuery Standard SQL 中的类似。
为此,我想使用 Big Query Legacy SQL.
你说的分页是通过tabledata.list
API
完成的
根据您的问题和 follow-up 评论 - 这可能是您要走的路。即使它不涉及查询。只需 API 或您选择的客户端中的相关方法。
pageToken 参数允许您分页结果
顺便说一句,这种方法的另一个好处 - 它是免费的
如果您仍然需要通过查询进行分页 - 您可以选择使用 ROW_NUMBER()
在这种情况下 - 您可以使用以下查询
在临时 table 中准备数据
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
我们根据特定请求使用旧版 SQL。由于某些内部原因,我们无法使用标准 SQL。
我们想对结果进行分页,因为我们有很多行。像这样:
SELECT ... FROM ... LIMIT 10000 30000 // In standard SQL
但在 Legacy SQL 中不存在偏移量。那么如何做同样的工作呢?
编辑:
我不想点菜。我想分页。例如跳过 2000 行后得到 1000 行。带有偏移量的简单 LIMIT 子句,如传统 SQL 数据库或 BigQuery Standard SQL 中的类似。 为此,我想使用 Big Query Legacy SQL.
你说的分页是通过tabledata.list
API
根据您的问题和 follow-up 评论 - 这可能是您要走的路。即使它不涉及查询。只需 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