Как получить упорядоченный вид? - PullRequest
3 голосов
/ 10 ноября 2010

Мой 'ВИД' заказан.Но когда я использую выбор, чтобы показать его результат, вывод перетасовывается.Такое поведение также происходит со следующим оператором

SELECT * FROM (SELECT * FROM TABLE ORDER BY COLUMNA) AS DERIVEDTABLE

Как предотвратить эту перетасовку?

Ответы [ 3 ]

3 голосов
/ 10 ноября 2010

К сожалению, представления не могут быть упорядочены в SQL Server.Вы должны сделать это в операторе выбора, читая представление.

Хром, я знаю.

2 голосов
/ 10 ноября 2010

у вас должно быть только ORDER BY на крайнем выбранном элементе, который использует представление:

SELECT * FROM (SELECT * FROM TABLE) AS DERIVEDTABLE ORDER BY YourColumn

, если вы не используете TOP

SELECT * FROM (SELECT top 1000000 * FROM TABLE ORDER BY COLUMNA) AS DERIVEDTABLE

, однако окончательный порядок сортировки все еще может изменитьсяв зависимости от внешнего запроса, если вы не добавите другой заказ по:

SELECT * FROM (SELECT top 1000000 * FROM TABLE ORDER BY COLUMNA) AS DERIVEDTABLE
ORDER BY COLUMNA
1 голос
/ 10 ноября 2010

Вы не можете.Единственный способ указать заказ - это запросить его на самом внешнем уровне запроса - это единственное место, где ORDER BY предназначен для упорядочения окончательного набора результатов.Любое другое использование ORDER BY предназначено только для помощи с другими операциями (например, для определения того, что такое «ТОП 10» при использовании TOP).

SQL Server 2000 раньше можно было обмануть вприменение ORDER BY в представлении, и, к сожалению, дизайнеры представлений в Enterprise Manager и SSMS продолжают притворяться, что это работает.Это не так.Не позволяя уловке работать дольше, это, по-видимому, открывает больше возможностей для оптимизации запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...