Я создал представление SQL, и я должен отсортировать результаты выбора при помощи ORDER BY на 4 полях, но я получаю сообщение, что ORDER BY не может использоваться в представлениях, если я не использую TOP. Кто-то может объяснить, почему TOP необходим, и у кого-то есть обходное решение для сортировки в представлении SQL?
Спасибо.
вам не нужно сортировать вид. вид похож на таблицу, поэтому вы сортируете его, когда выбираете из него:
select * from yourView order by yourColumns
Если вы используете SQL Server, вы можете сделать
select top 100 percent *
from MyTable
order by MyColumn
Конечно, вы не должны использовать * на ваш взгляд, я просто использовал его здесь для краткости.
][]Нет гарантии, что вывод изображения будет заказан[][
] []Для результирующих множеств применяется только крайнее ЗАКАЗАНИЕ BY: никаких внутренних - нет. Таким образом, только этот ORDER BY может быть гарантированно сработан:[
] [SELECT col1, col2, FROm MyView ORDER BY col2
]
[]Вы можете добавить его в представления или производные таблицы, и это приведет к "[]промежуточной материализации[]", потому что результаты должны быть упорядочены. Однако, для SQL Server 2005 и выше вы должны использовать []TOP 2000000000[
], а не []TOP 100 PERCENT[
] (за исключением того HF, о котором упоминал Даниэль Вассалло!)[
]Кто-то []будет[] в какой-то момент также использовать ваше представление в другом порядке, нежели внутреннее.[
].