微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL order by子句是否保证稳定(按标准)

我正在使用以下查询查询在两列上有订单的DB.

SELECT a,b,c from Table1 Order By a asc,b asc;

我的问题是,排序是否保证稳定(按标准).虽然它没有任何意义,但不稳定,但我问这个,因为我在网上读到了

The standard does not prevent the use of a stable sort,but it also
does not require it.

解决方法

这种排序不能保证稳定.我认为sql Server documentation对如何实现稳定排序有一个很好的解释:

To achieve stable results between query requests using OFFSET and
FETCH,the following conditions must be met:
The underlying data that is used by the query must not change. That is,either the rows touched
by the query are not updated or all requests for pages from the query
are executed in a single transaction using either snapshot or
serializable transaction isolation. For more information about these
transaction isolation levels,see SET TRANSACTION ISOLATION LEVEL
(Transact-sql). The ORDER BY clause contains a column or combination
of columns that are guaranteed to be unique.

理解排序不稳定的最简单方法是返回表的定义.表在sql中本质上是无序的.因此,没有任何顺序可以依靠“稳定性”.

作为第二个考虑因素,可以并行地实施分类.在大多数并行排序中,公共密钥被汇集在一起​​而没有关于其原始顺序的信息(除非在排序密钥中显式或隐式地实现).

原文地址:https://www.jb51.cc/mssql/83862.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐