Возможно иметь OrderBy в представлении? - PullRequest
4 голосов
/ 19 ноября 2010

Мой администратор БД сообщает мне, что невозможно иметь OrderBy в виде SQL.

У меня проблемы с сторонним компонентом, который должен иметь представление в определенном порядке. Это правда? Я не могу сортировать в представлении?

Ответы [ 4 ]

9 голосов
/ 19 ноября 2010

Представления SQL Server не учитывают order by с. Есть хаки *, чтобы заставить их работать, но они не документированы, и я бы посоветовал не полагаться на их корректную работу в будущих ревизиях.

Если вы хотите заказать представление, правильный способ сделать это - поставить order by в select, который читает представление.

Это часто неправильно понимаемая точка зрения. Итак, ссылки: Статья , MSDN .

* - order by s поддерживается с предложением top. Итак, теоретически вы можете сделать select top 100%. Это не верно. Сервер НЕ гарантирует, что представление останется упорядоченным. Это поддерживается только, поэтому вы можете правильно указать , какие именно верхние строки включить. Для некоторых запросов порядок сохраняется, но это совершенно случайно, и если вы зависите от него, вам будет интересно отследить ошибку, которая в конечном итоге появится, когда заказ не будет выполнен. Порядок просмотров не гарантируется.

4 голосов
/ 19 ноября 2010

Обычно SQL Server возражает против ORDER BY в представлении.Вы можете немного обмануть, включив в запрос предложение TOP, которое затем разрешит ORDER BY.

0 голосов
/ 19 ноября 2010

Ваш администратор базы данных, вероятно, обеспокоен тем, что вам потребуется или вам нужно индексированное представление, которое замедляет вставки и обновления.

0 голосов
/ 19 ноября 2010

Я бы также сказал: Конечно, вы можете сортировать выбор из вида. Но кто-нибудь может объяснить, что я нахожу здесь на MSDN?

Предложение ORDER BY недопустимо в представления, встроенные функции, производные таблицы и подзапросы, если ТОП не также указано.

...