在T-SQL中使用偏移行更改排序顺序

时间:2014-09-17 09:16:57

标签: sql tsql sql-order-by

我最近发现使用"偏移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数据类型作为标识符,所以也许这就是造成这种奇怪行为的原因?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题但在MSDN上发现了这个问题:

  

除非指定了ORDER BY子句,否则无法保证在结果集中返回行的顺序。

ORDER BY Clause

没有指定因为结果包含两次(或更多)相同的值,所以订单不能保证,但我想这是隐含的。