我想知道 AWS Athena 是否支持 OFFSET。对于 mysql,以下查询正在运行,但在 athena 中它给了我错误。任何例子都会有帮助。
从员工中选择 *,其中 empSal >3000 LIMIT 300 OFFSET 20
Athena 基本上是管理 Presto 的。自从急速311您可以使用OFFSET m LIMIT n
语法或 ANSI SQL 等效项:OFFSET m ROWS FETCH NEXT n ROWS ONLY
.
您可以阅读更多内容超越 LIMIT,Presto 满足 OFFSET 和 TIES.
对于旧版本(这包括截至撰写本文时的 AWS Athena), 您可以使用row_number()窗口函数来实现OFFSET + LIMIT。
例如,代替
SELECT * FROM elb_logs
OFFSET 5 LIMIT 5 -- this doesn't work, obviously
你可以执行
SELECT * FROM (
SELECT row_number() over() AS rn, * FROM elb_logs)
WHERE rn BETWEEN 5 AND 10;
注意:执行引擎仍然需要从基础表中读取 offset+limit 行,但这仍然比将所有这些行发送回客户端并在那里获取子列表要好得多。
警告:参见https://stackoverflow.com/a/45114359/65458解释为什么在查询中避免 OFFSET 通常是一个好主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)