回答

收藏

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通常是个好主意。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则