[英]How can I paginate this BigQuery query using the rownumber?
如何更新此BigQuery查詢以允許其他分頁語句?
SELECT test.id, test.city, ROW_NUMBER() OVER () rownumber FROM prod.test LEFT OUTER JOIN prod.locations AS location ON (test.city = location.id)
WHERE active = true
AND rownumber BETWEEN 10000 AND 30000
產生的錯誤是:
無法識別的名稱:行號
對於此示例,使用子查詢:
SELECT t.*
FROM (SELECT test.id, test.city, ROW_NUMBER() OVER () rownumber
FROM prod.test LEFT OUTER JOIN
prod.locations location
ON test.city = location.id
WHERE active = true
) t
WHERE rownumber BETWEEN 10000 AND 30000 ;
但是,您可能應該使用LIMIT
和OFFSET
。
您也可以使用CTE
with cte as
(
SELECT test.id, test.city, ROW_NUMBER() OVER () rownumber
FROM prod.test LEFT OUTER JOIN prod.locations AS location ON (test.city = location.id)
WHERE active = true
) select * from cte where rownumber BETWEEN 10000 AND 30000
rownumber是直接在where子句中不支持的內聯別名
如果bigquery支持,則可以使用此標准sql子句,
SELECT
test.id
,test.city
FROM prod.test as test
LEFT OUTER JOIN prod.locations AS location ON (test.city = location.id)
WHERE active = true
order by test.id
offset 10000 rows fetch next 20000 rows only
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.