说明 ORDER BY [Column A ] ASC OFFSET 0 ROWS FETCH FIRST 1 ROWS ONLY.If [Column A ]
的意外分页结果具有相同的值。
注意:我使用SQL Server 2012 Express
条件:
使用表达式:ORDER BY [Column A] ...
[A列]:所有行都具有相同的值。
预生产:
案例1:
SELECT [Id],[Date]
FROM [TestDateoffset]
ORDER BY [Date] ASC
OFFSET 0 ROWS
目前的结果:
Id Date
---------------------------------------
1 2015-01-24 21:40:30.0441628 +07:00
2 2015-01-24 21:40:30.0441628 +07:00
3 2015-01-24 21:40:30.0441628 +07:00
4 2015-01-24 21:40:30.0441628 +07:00
预期结果:
Id Date
-----------------------------------
1 2015-01-24 21:40:30.0441628 +07:00
2 2015-01-24 21:40:30.0441628 +07:00
3 2015-01-24 21:40:30.0441628 +07:00
4 2015-01-24 21:40:30.0441628 +07:00
状态:通过
案例2:
SELECT [Id],[Date]
FROM [TestDateoffset]
ORDER BY [Date] ASC
OFFSET 0 ROWS FETCH FIRST 1 ROWS ONLY
实际结果:
Id Date
---------------------------------------
2 2015-01-24 21:40:30.0441628 +07:00
预期结果:
Id Date
---------------------------------------
1 2015-01-24 21:40:30.0441628 +07:00
状态:失败
案例3:
SELECT [Id],[Date]
FROM [TestDateoffset]
ORDER BY [Date] ASC
OFFSET 1 ROWS FETCH FIRST 1 ROWS ONLY
实际结果:
Id Date
---------------------------------------
2 2015-01-24 21:40:30.0441628 +07:00
预期结果:
它必须与:
不同Id Date
---------------------------------------
2 2015-01-24 21:40:30.0441628 +07:00
状态:失败
如果我运行OFFSET 1 ROWS或OFFSET 2 ROWS,结果总是相同的..:
Id Date
---------------------------------------
2 2015-01-24 21:40:30.0441628 +07:00
我的问题:
这是一个错误吗?
在案例2中,案例3:它是如何工作的?为什么我总是有第二记录?
我认为"order"
和"ORDER BY COLUMN ASC"
背后的"ORDER BY COLUMN ASC OFFSET 0 ROWS FETCH FIRST 1"
流程不同。但我不知道为什么和规则是什么!
答案 0 :(得分:3)
您在Date
上订购,但所有日期都相同,因此SQL Server可以按任意顺序返回行。
要在日期相同的情况下在id
订购,您可以使用:
ORDER BY Date, Id OFFSET 0 ROWS FETCH FIRST 1 ROWS ONLY
^^^^