AWS Athena(Presto)OFFSET支持
技术问答
282 人阅读
|
0 人回复
|
2023-09-14
|
我想知道AWS Athena中是否支持OFFSET。对于mysql,以下查询正在运行,但雅典娜给了我错误。任何例子都会有帮助。7 T( j9 f- Y+ X \& b& Z
从员工中选择* empSal> 3000 LIMIT 300 OFFSET 20- R) e: F$ H3 s0 l3 A3 W0 t
@2 G" k" g' X! F- B' V3 A 解决方案: - c: {& S: y* e+ W5 h3 @( ]
雅典娜基本上是由Presto管理的。从Presto你可以从311开始使用它OFFSETm LIMIT n语法或等效ANSI SQL :OFFSET m ROWS FETCH NEXT n ROWS ONLY。
& Q* i: A, u1 H# }超越极限可以阅读更多内容,Presto满足OFFSET和TIES的要求。
( D I+ n9 z" d- u对于旧版本(写这篇文章时,包括AWS Athena在内)
1 D1 w& ^" @) p v' o,您可以使用row_number()实现窗口函数OFFSET
* v; w% s1 T6 ~ LIMIT。
! I$ h8 U+ F5 G9 |4 y6 k, H1 ^例如,代替( p* N$ u r( ~) N9 ?9 i( D, f
SELECT * FROM elb_logsOFFSET 5 LIMIT 5 -- this doesn't work,obviously您可以执行
# W) c3 S; \; |/ w8 s; iSELECT * FROM SELECT row_number() over() AS rn,* FROM elb_logs)WHERE rn BETWEEN 5 AND 10;注:执行引擎仍需从基本表中读取offset limit是的,但这仍然比将所有这些行发送回客户端并放置子列表要好得多。4 i r4 `( P! o
警告:请参考https://codingdict.com/questions/211823了解为什么要避免查询OFFSET通常是个好主意。 |
|
|
|
|
|