我正在使用嵌入式 Apache Derby 数据库并执行以下查询:
SELECT
someUniqueValue,
row_number() over(ORDER BY someUniqueValue) as ROWID
FROM
myTable;
someUniqueValue
是一个 varchar。
我收到异常:
java.sql.SQLFeatureNotSupportedException:功能未实现:WINDOW/ORDER BY
如果我改变row_number()
我的查询中的行:
row_number() over() as ROWID
查询运行良好(尽管结果对我来说毫无用处)。
德比文档 http://wiki.apache.org/db-derby/OLAPRowNumber表明这是支持的。我究竟做错了什么?
您发布的链接只是一个草稿,用于指定如何实现该功能。
如果你向下滚动一点,你会发现:
从 10.4.1.3 版本开始,Derby 中包含 ROW_NUMBER() 窗口函数的实现。限制和使用说明可以在 Derby 参考手册中找到
当您查看 Derby 手册时(您的链接不是手册)http://db.apache.org/derby/docs/10.10/ref/rreffuncrownumber.html http://db.apache.org/derby/docs/10.10/ref/rreffuncrownumber.html您会发现一系列限制:
- Derby 当前不允许在 OVER() 子句中指定命名或未命名窗口规范,但需要一个空括号。这意味着该函数是在整个结果集上评估的。
- ROW_NUMBER 函数当前不能在 WHERE 子句中使用。
- Derby 目前不支持子查询中的 ORDER BY,因此目前无法保证 SELECT 子查询中行的顺序。如果排序是严格要求,则可以使用优化器覆盖来强制优化器使用在所需列上排序的索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)