未实现的功能:WINDOW/ORDER BY
Posted
技术标签:
【中文标题】未实现的功能:WINDOW/ORDER BY【英文标题】:Feature not implemented: WINDOW/ORDER BY 【发布时间】:2014-01-24 06:29:56 【问题描述】:我正在使用嵌入式 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
查询运行良好(虽然结果对我没用)。
The Derby documentation 表示支持。我做错了什么?
【问题讨论】:
【参考方案1】:您发布的链接只是一个草稿,用于指定应如何实施该功能。
如果你向下滚动一点,你会发现:
从 10.4.1.3 版本开始,ROW_NUMBER() 窗口函数的实现包含在 Derby 中。限制和使用说明可以在 Derby 参考手册中找到
当您查看 Derby 手册(您的链接不是手册)http://db.apache.org/derby/docs/10.10/ref/rreffuncrownumber.html 时,您会发现一系列限制:
Derby 当前不允许在 OVER() 子句中指定命名或未命名窗口规范,但需要一个空括号。这意味着函数会在整个结果集上进行评估。 目前不能在 WHERE 子句中使用 ROW_NUMBER 函数。 Derby 目前不支持子查询中的 ORDER BY,因此目前无法保证 SELECT 子查询中的行顺序。如果排序是严格要求,可以使用优化器覆盖来强制优化器使用在所需列上排序的索引。【讨论】:
以上是关于未实现的功能:WINDOW/ORDER BY的主要内容,如果未能解决你的问题,请参考以下文章