Вы не можете. Реляционные базы данных не имеют понятия упорядочения строк в таблице. Если вы хотите упорядоченный вывод, вы должны использовать предложение ORDER BY
. Это фундаментальный факт, и вы не можете работать.
В SQL Server 2000 в (по существу) ошибке Microsoft разрешала представления иметь предложение ORDER BY
, которое упорядочивало вывод. Однако в SQL Server 2005 это было изменено, потому что никогда не было так правильно работать.
Вы можете попробовать трюк SELECT TOP (2147483647) * FROM dbo.Blah B ORDER BY B.Col;
, но это также не сократит его в последующих версиях SQL Server. Поведение порядка TOP
является побочным эффектом, а не основным эффектом, и на него не следует полагаться. Сделайте это правильно и поместите сортировку, где это должно быть: на уровне презентации или в последнем внешнем запросе, который отправлен в базу данных (ala SELECT Columns FROM dbo.View ORDER BY X;
).
Чуть больше не приказывать строк в таблице: да, есть кластерные индексы, но вы не можете полагаться на данные возвращения заказаны по нескольким причинам:
- некластеризованном индекс может быть использован для удовлетворяют запросу, поэтому упорядочение кластерного индекса не повлияет на упорядочение выходных рядов.
- На столе не может быть кластеризованного индекса.
- Хотя строки каждой кластерной индексной страницы меньше, чем следующая страница и больше, чем предыдущая страница, строки внутри каждой страницы сами не упорядочиваются.
- Параллелизм может изменить порядок создания строк, поскольку один поток может вернуться быстрее или медленнее, чем другие.
- Во время выполнения запроса, если другой процесс уже считывает некоторые строки, которые будут удовлетворять текущему запросу, эти данные могут быть заимствованы для текущего запроса не в порядке, чтобы сохранить записи (после чего текущий запрос будет выберите только оставшиеся строки, которые отсутствуют).
Существует один простой, надежный и требуется способ получить упорядоченный набор строк: ORDER BY
.
Если вы хотите получить конкретный заказ, поместите ORDER BY во внешний запрос. Период. Другого пути, извините. –