这是一个非常简单的问题,但是我似乎找不到有关它的文档。如何通过索引查询行(即选择表中的第10至20行)?
我知道有一个row_numbers
函数,但是它似乎并没有满足我的要求。
答案 0 :(得分:1)
请勿指定任何分区,因此您的行号将是1到记录数之间的整数。
SELECT row_num FROM (
SELECT row_number() over () as row_num
FROM your_table
)
WHERE row_num between 100000 and 100010
答案 1 :(得分:0)
我似乎在雅典娜找到了一种绕行而笨拙的方式,因此欢迎任何更好的答案。这种方法要求您的表中已经有一些数字列,在本例中为some_numeric_column
:
SELECT some_numeric_column, row_num FROM (
SELECT some_numeric_column,
row_number() over (order by some_numeric_column) as row_num
FROM your_table
)
WHERE row_num between 100000 and 100010
为说明起见,您首先要在数据中选择一些数字列,然后根据所选数字列的顺序创建一个行号列(称为row_num)。然后将所有内容包装在一个select调用中,因为Athena不支持在单个调用中创建row_num列,然后对其进行条件化。如果您不将其包装在第二个SELECT
调用中,那么Athena会吐出一些有关找不到名为row_num
的列的错误。