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

前端之家收集整理的这篇文章主要介绍了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中本质上是无序的.因此,没有任何顺序可以依靠“稳定性”.

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

猜你在找的MsSQL相关文章