2014-09-17 2 views
1

Недавно я обнаружил, что при использовании «смещения x строк» ​​с помощью команды «только выборка x только строки» и «упорядочить по» элементы с одинаковым значением могут отображаться в другом заказ.с использованием смещенных строк в порядке сортировки изменений T-SQL

Пример:

SELECT * FROM Rows ORDER BY [IntegerField] OFFSET 0 ROWS 

Output: 
ID IntegerField 
1 1 
2 1 
3 2 

Но добавляя выборку следующих 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

может не иметь отношения, но является ли '3 2' строкой опечатки в первом примере или есть ли вставка между двумя примерами? – tschmit007

+2

Если столбцы и/или выражения (выражения), которые вы идентифицируете в своем предложении ORDER BY, не создают уникальные значения для всех строк, тогда все строки, которые имеют одинаковые значения, могут быть возвращены в любом порядке что сервер находит удобнее. Если вы * нуждаетесь в * специальном * заказе, единственный способ гарантировать это - указать это требование заказа в предложении 'ORDER BY'. –

+0

@ tschmit007 спасибо! Это была опечатка с моей стороны. Я редактировал сообщение. – einord

ответ

0

У меня была та же проблема, но нашел это на MSDN:

Порядок, в котором строки возвращаются в наборе результатов не гарантируется, если не задана предложения ORDER BY.

ORDER BY Clause

Не указано, что, так как результат содержит в два раза (или больше) то же значение, порядок не гарантируется, но я предполагаю, что это подразумевается.

Смежные вопросы