我有一个T-SQL查询表,我需要返回顶行.在MySQL中,这是按预期工作的,但在SQL Server中,我得到的是返回的不同数据,这非常令人费解.
我附加了三个屏幕截图:1个表格设计,当查看前10行时返回的数据中的1个和查看前1000行时返回的1个数据.您会注意到最上面一行包含两个查询之间的name列的不同信息.
查询中唯一的区别是TOP
关键字的计数值.该表共有7行数据.结果Top 1000
包含返回的行的正确顺序.这里发生了什么?
为什么SQL Server会根据TOP
关键字的计数值更改返回的行的顺序?无论有多少行被返回,任何人都可以解释或提供保持这种一致性的方法吗?
输出中没有差异或问题.您按宽度排序,前2个宽度相同,并且您没有任何子排序,因此它将决策留给RDBMS(具体为其查询优化器),以便先显示
您还应该在之后添加itemNumber
到您的ORDER BY
子句中Width
ORDER BY Width, itemNumber
Order by
是不能保证得到同样的结果为相等的值作为SQL表表示无序集合.因为你的宽度是相同的,所以你会得到不同的结果.
要获得唯一结果或使您的排序稳定,您需要添加类似于itemNumber
您的order by
子句的列名.