AWS Athena(Presto)OFFSET支持
技术问答
156 人阅读
|
0 人回复
|
2023-09-14
|
我想知道AWS Athena中是否支持OFFSET。对于mysql,以下查询正在运行,但雅典娜给了我错误。任何例子都会有帮助。: {3 S; H: g' N: V
从员工中选择* empSal> 3000 LIMIT 300 OFFSET 20/ `# l1 B. o$ ^' n) Q) a& }
5 W/ {2 D. B# _- [7 j 解决方案: * `( n0 x4 `( W! ^) ]+ }' x
雅典娜基本上是由Presto管理的。从Presto你可以从311开始使用它OFFSETm LIMIT n语法或等效ANSI SQL :OFFSET m ROWS FETCH NEXT n ROWS ONLY。
4 U" [$ i+ M) m! O超越极限可以阅读更多内容,Presto满足OFFSET和TIES的要求。
# |6 b' q q! v( y对于旧版本(写这篇文章时,包括AWS Athena在内)2 p1 n- E' w$ h7 c) D( G0 y* j
,您可以使用row_number()实现窗口函数OFFSET$ N" E4 Q0 T( Z2 d9 m
LIMIT。* i3 K- N6 t/ c/ e4 L: C" `
例如,代替( [: d1 B" ~" y7 f6 c1 r: R
SELECT * FROM elb_logsOFFSET 5 LIMIT 5 -- this doesn't work,obviously您可以执行
/ y1 p8 P; L1 R7 R" v% }SELECT * FROM SELECT row_number() over() AS rn,* FROM elb_logs)WHERE rn BETWEEN 5 AND 10;注:执行引擎仍需从基本表中读取offset limit是的,但这仍然比将所有这些行发送回客户端并放置子列表要好得多。: ^ X' N- H3 E: e3 C' h" m0 g; d
警告:请参考https://codingdict.com/questions/211823了解为什么要避免查询OFFSET通常是个好主意。 |
|
|
|
|
|