ROW_NUMBER() OVER () with order by in H2

ROW_NUMBER() OVER () with order by in H2

我正在尝试使用 ROW_NUMBER 子句对 H2 数据库中的 table 执行查询。这是我的查询:

SELECT ROW_NUMBER() OVER (order by data), name FROM students

但我在 H2 控制台中收到错误消息:

Syntax error in SQL statement "SELECT ROW_NUMBER() OVER (order[*] by data), name FROM students"; expected ")";

我注意到它只有在 OVER 子句为空时才有效,例如 OVER();

有什么想法吗?

V1.4.198(2019 年 2 月发布)之前的 H2 数据库不支持此功能。您需要使用:

select rownum(), name 
from students 
order by data

从 V1.4.198 开始,添加了对 ROW_NUMBER(以及一些其他 window 函数)的支持(参见 H2 Changelog),因此现在您的查询应该可以按预期工作。