2010-01-06 150 views
9

He creado una vista sql y necesito ordenar los resultados de seleccionar usando ORDER BY en 4 campos, pero recibo el mensaje de que ORDER BY no se puede usar en vistas a menos que Yo uso TOP ¿Alguien puede explicar por qué se necesita TOP, y alguien tiene una solución alternativa para clasificar en una vista sql?Cómo ordenar dentro de una vista sql

Gracias.

Respuesta

-1

si utiliza SQL Server, puede hacer

select top 100 percent * 
from MyTable 
order by MyColumn 

Por supuesto no se debe utilizar un * en su opinión, sólo utiliza aquí para mayor brevedad.

+3

desde 2005 el optimizador sql elimina esta orden por lo que esto no funciona! ten cuidado con eso. –

+0

¿Tiene alguna referencia? – RedFilter

+1

¡seguro! directamente desde el equipo del optimizador de consultas del servidor sql: http://blogs.msdn.com/queryoptteam/archive/2006/03/24/560396.aspx –

17

no es necesario ordenar una vista. una vista es como una mesa para ordenar que cuando se selecciona de ella:

select * from yourView order by yourColumns 
+2

* La * respuesta correcta – gbn

5

no hay garantía de la salida de la vista, se ordenará

sólo el orden más externa POR aplica para los conjuntos de resultados : no cualquier interno. Por lo que sólo esta ORDER BY se puede garantizar que el trabajo:

SELECT col1, col2, FROm MyView ORDER BY col2 

puedes añadir a las vistas o tablas derivadas y fuerza "intermediate materialisation" porque los resultados tienen que ser pedidos. Sin embargo, para SQL Server 2005 y anteriormente, usted tiene que utilizar TOP 2000000000 no TOP 100 PERCENT (a excepción de que la IC que Daniel Vassallo mencionó!)

Alguien se usar su visión con un orden diferente al que internamente en algún momento también.

0

Usted puede tratar de:

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

¿Sería crear un índice en la columna con la que tiene la intención de ordenar la vista ayuda?

Cuestiones relacionadas