簡體   English   中英

如何使用行號對這個BigQuery查詢進行分頁?

[英]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 ;

但是,您可能應該使用LIMITOFFSET

您也可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM