未实现的功能: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的主要内容,如果未能解决你的问题,请参考以下文章

JCrop - 功能未实现

ENOSYS:功能未实现

存储过程中未实现的功能错误

Swift 1.2 中未正确实现随机播放功能

尝试使用 ONI 录制时“功能未实现”

OpenCV报错:功能未实现