我最近发现使用"偏移x行"使用"仅获取下一个x行" "按顺序排列"命令,具有相同值的项目可能以不同的顺序出现。
示例:
SELECT * FROM Rows ORDER BY [IntegerField] OFFSET 0 ROWS
Output:
ID IntegerField
1 1
2 1
3 2
但是只添加fetch next 50行
SELECT * FROM Rows ORDER BY [IntegerField] OFFSET 0 ROWS FETCH NEXT 50 ROWS ONLY
Output:
ID IntegerField
2 1
1 1
3 2
在现实生活中,我使用GUID数据类型作为标识符,所以也许这就是造成这种奇怪行为的原因?
答案 0 :(得分:0)
我遇到了同样的问题但在MSDN上发现了这个问题:
除非指定了ORDER BY子句,否则无法保证在结果集中返回行的顺序。
没有指定因为结果包含两次(或更多)相同的值,所以订单不能保证,但我想这是隐含的。