sql – ORDER BY和ROW_NUMBER()是否确定?
发布时间:2020-12-12 06:48:12 所属栏目:MsSql教程 来源:网络整理
导读:我已经在几个数据库引擎中不时使用SQL几年但是理论知识很少,所以我的问题可能对你们中的某些人来说非常“愚蠢”.但它现在变得很重要,所以我不得不问. 想象一下具有非唯一列状态的表Url.对于这个问题,假设我们有大量的行,并且状态在每条记录中都具有相同的值.
我已经在几个数据库引擎中不时使用SQL几年但是理论知识很少,所以我的问题可能对你们中的某些人来说非常“愚蠢”.但它现在变得很重要,所以我不得不问.
想象一下具有非唯一列状态的表Url.对于这个问题,假设我们有大量的行,并且状态在每条记录中都具有相同的值. 并想象我们执行多次查询: SELECT * FROM Urls ORDER BY status >我们每次都获得相同的行顺序吗?如果我们做了如果添加一些新行会发生什么?它是否会更改订单,或者新记录会附加到结果的末尾?如果我们没有获得相同的订单 – 在什么条件下依赖于此订单? 解决方法这很简单.如果您想要一个可以依赖的排序,那么您需要在ORDER BY子句中包含足够的列,以便所有这些列的组合对于每一行都是唯一的.没有其他保证.对于单个表,通常可以通过列出“有趣”的列进行排序,然后包括主键列来获得所需的内容.由于PK本身保证了唯一性,因此整个组合也保证唯一地定义排序,例如,如果Urls表的主键为{Site,Page,Ordinal},那么以下内容将为您提供可靠的结果: SELECT * FROM Urls ORDER BY status,Site,Ordinal (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |