当前位置:  开发笔记 > 后端 > 正文

SQL Server TOP关键字返回不同的结果

如何解决《SQLServerTOP关键字返回不同的结果》经验,为你挑选了2个好方法。

我有一个T-SQL查询表,我需要返回顶行.在MySQL中,这是按预期工作的,但在SQL Server中,我得到的是返回的不同数据,这非常令人费解.

我附加了三个屏幕截图:1个表格设计,当查看前10行时返回的数据中的1个和查看前1000行时返回的1个数据.您会注意到最上面一行包含两个查询之间的name列的不同信息.

查询中唯一的区别是TOP关键字的计数值.该表共有7行数据.结果Top 1000包含返回的行的正确顺序.这里发生了什么?

为什么SQL Server会根据TOP关键字的计数值更改返回的行的顺序?无论有多少行被返回,任何人都可以解释或提供保持这种一致性的方法吗?

表设计

前10名

前1000名



1> Hanky Panky..:

输出中没有差异或问题.您按宽度排序,前2个宽度相同,并且您没有任何子排序,因此它将决策留给RDBMS(具体为其查询优化器),以便先显示

您还应该在之后添加itemNumber到您的ORDER BY子句中Width

ORDER BY Width, itemNumber



2> Rahul Tripat..:

Order by不能保证得到同样的结果为相等的值作为SQL表表示无序集合.因为你的宽度是相同的,所以你会得到不同的结果.

要获得唯一结果或使您的排序稳定,您需要添加类似于itemNumber您的order by子句的列名.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有