Как сортировать в представлении sql - PullRequest
9 голосов
/ 06 января 2010

Я создал представление sql, и мне нужно отсортировать результаты выбора, используя ORDER BY для 4 полей, но я получаю сообщение о том, что ORDER BY нельзя использовать в представлениях, если я не использую TOP. Может кто-нибудь объяснить, зачем нужен TOP, и есть ли у кого-то обходной путь для сортировки в представлении sql?

Спасибо.

Ответы [ 5 ]

17 голосов
/ 06 января 2010

вам не нужно сортировать вид. представление похоже на таблицу, поэтому вы сортируете ее, когда выбираете из нее:

select * from yourView order by yourColumns
5 голосов
/ 06 января 2010

Нет гарантии, что выходные данные вида будут упорядочены

Только наборы ORDER BY применяются только к результирующим наборам: не любые внутренние. Так что только этот ORDER BY может быть гарантированно работать:

SELECT col1, col2, FROm MyView ORDER BY col2

Вы можете добавить его к представлениям или производным таблицам, и оно вызывает " промежуточную материализацию ", потому что результаты должны быть упорядочены. Однако для SQL Server 2005 и выше вы должны использовать TOP 2000000000, а не TOP 100 PERCENT (за исключением той ВЧ, о которой упоминал Даниэль Вассалло!)

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

0 голосов
/ 08 июля 2016

Будет ли создание индекса для столбца, с которым вы собираетесь сортировать справку представления?

0 голосов
/ 31 марта 2015

Вы можете попробовать:

CREATE VIEW View_Products
AS
SELECT ProductID, ProductName, UnitPrice, CreateDate FROM Products
Order by CreateDate DESC
OFFSET 0 ROWS
0 голосов
/ 06 января 2010

Если вы используете SQL Server, вы можете сделать

select top 100 percent * 
from MyTable 
order by MyColumn

Конечно, вы не должны использовать * с вашей точки зрения, я просто использовал его здесь для краткости.

...