2010-01-06 6 views
9

J'ai créé une vue sql et j'ai besoin de trier les résultats de select en utilisant les champs ORDER BY sur 4, mais je reçois le message que ORDER BY ne peut pas être utilisé dans les vues sauf J'utilise TOP. Quelqu'un peut-il expliquer pourquoi TOP est nécessaire, et est-ce que quelqu'un a une solution de contournement pour le tri dans une vue sql?Comment trier dans une vue sql

Merci.

Répondre

-1

Si vous utilisez SQL Server, vous pouvez faire

select top 100 percent * 
from MyTable 
order by MyColumn 

Bien sûr, vous ne devriez pas utiliser un * dans votre point de vue, je viens d'utiliser ici par souci de concision.

+3

Depuis 2005, l'optimiseur sql supprime cette commande, donc cela ne fonctionne pas! soyez prudent avec ça. –

+0

Avez-vous une référence? – RedFilter

+1

sûr! directement à partir de l'équipe d'optimiseur de requêtes du serveur sql: http://blogs.msdn.com/queryoptteam/archive/2006/03/24/560396.aspx –

17

vous n'avez pas besoin de trier une vue. une vue est comme une table si vous triez quand vous sélectionnez de celui-ci:

select * from yourView order by yourColumns 
+2

* La * bonne réponse – gbn

5

Il n'y a aucune garantie que la sortie de la vue sera commandé

Seul l'ordre externe BY applique pour les jeux de résultats : pas d'intérieurs. Alors que cette ORDER BY peut être garantie au travail:

SELECT col1, col2, FROm MyView ORDER BY col2 

Vous pouvez l'ajouter à des vues ou tables dérivées et forces « intermediate materialisation » parce que les résultats doivent être commandés. Cependant, pour SQL Server 2005 et ci-dessus, vous devez utiliser TOP 2000000000 pas TOP 100 PERCENT (sauf pour ce HF que Daniel Vassallo mentionné!)

Quelqu'un va utiliser votre point de vue avec un ordre différent de celui en interne à un moment donné aussi.

0

Vous pouvez essayer:

CREATE VIEW View_Products 
AS 
SELECT ProductID, ProductName, UnitPrice, CreateDate FROM Products 
Order by CreateDate DESC 
OFFSET 0 ROWS 
0

Est-ce que la création d'un index sur la colonne avec laquelle vous avez l'intention de trier l'aide de vue?

Questions connexes