您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Oracle SQL:ORDER BY非唯一字段是确定性的吗?

Oracle SQL:ORDER BY非唯一字段是确定性的吗?

不能。sql通常,尤其是Oracle不能保证稳定的排序。也就是说,您可以运行两次相同的查询并获得不同的排序-当键绑定时。

这是因为sql表(和结果集)表示 无序 集。因此,没有“自然”的命令可以依靠。通常,最好在中包含其他键order by以使排序稳定。

编辑:

我想再说一遍。您的示例用于查询的整体排序,其中的问题有点抽象-也就是说,查询的任何给定运行看起来都是正确的。窗口功能成为一个更大的问题。因此,有可能:

select v.*, row_number() over (order by sortingcol) as col1,
       row_number() over (order by sortingcol desc) as col2
from myview v

会产生不一致的结果。在正常情况下,我们希望col1 + col2它会保持不变。但是,有了联系,通常就不会这样了。这会影响row_number()keep。它不会影响rank()dense_rank()始终处理关系。

SQLServer 2022/1/1 18:50:14 有506人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶