ORDER BY (Entity SQL)

Specifica il tipo di ordinamento usato per gli oggetti restituiti in un'istruzione SELECT.

Sintassi

[ ORDER BY
   {
      order_by_expression [SKIP n] [LIMIT n]
      [ COLLATE collation_name ]
      [ ASC | DESC ]
   }
   [ ,…n ]
]

Argomenti

order_by_expression Qualsiasi espressione di query valida che specifica una proprietà in base a cui eseguire l'ordinamento. È possibile specificare più espressioni di ordinamento. La sequenza delle espressioni di ordinamento nella clausola ORDER BY definisce l'organizzazione del set di risultati ordinato.

COLLATE {collation_name} Indica che l'operazione ORDER BY deve essere eseguita in base alle regole di confronto specificate in collation_name. È possibile applicare COLLATE solo alle espressioni stringa.

ASC Specifica che i valori nella proprietà specificata devono essere ordinati in modo crescente, dal valore più basso a quello più alto. Si tratta dell'impostazione predefinita.

DESC Specifica che i valori nella proprietà specificata devono essere ordinati in modo decrescente, dal valore più alto a quello più basso.

LIMIT n Verranno selezionati solo i primi n elementi.

SKIP nn elementi verranno ignorati.

Osservazioni:

La clausola ORDER BY viene applicata logicamente al risultato della clausola SELECT. La clausola ORDER BY può fare riferimento agli elementi nell'elenco di selezione tramite i relativi alias. La clausola ORDER BY può fare riferimento anche ad altre variabili attualmente incluse nell'ambito. Se, tuttavia, la clausola SELECT è stata specificata con un modificatore DISTINCT, la clausola ORDER BY può fare riferimento solo agli alias della clausola SELECT.

SELECT c AS c1 FROM cs AS c ORDER BY c1.e1, c.e2

Ogni espressione nella clausola ORDER BY deve restituire un tipo che possa essere confrontato per verificare la disuguaglianza ordinata (minore di o maggiore di e così via). Questi tipi sono in genere tipi primitivi scalari ad esempio numeri, stringhe e date. Anche i tipi RowTypes di tipi confrontabili possono essere confrontati in termini di ordinamento.

Se il codice scorre un set ordinato, non è garantito che l'ordine venga mantenuto, ad eccezione del caso di una proiezione di livello principale.

Nell'esempio seguente viene garantito che l'ordine verrà mantenuto:

SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName

Nella query seguente l'ordinamento della query nidificata viene ignorato:

SELECT C2.FirstName, C2.LastName
    FROM (SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName) as C2

Per eseguire un'operazione UNION, UNION ALL, EXCEPT o INTERSECT ordinata, usare il modello seguente:

SELECT ...
FROM ( UNION/EXCEPT/INTERSECT operation )
ORDER BY ...

Parole chiave con restrizioni

Le parole chiave seguenti devono essere racchiuse tra virgolette quando usate in una clausola ORDER BY :

  • CROSS

  • FULL

  • KEY

  • LEFT

  • ORDER

  • OUTER

  • RIGHT

  • ROW

  • VALORE

Ordinamento di query annidate

In Entity Framework un'espressione annidata può essere inserita in una posizione qualsiasi nella query. L'ordine di una query annidata non viene mantenuto.

La query seguente ordina i risultati in base al cognome:

SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName

Nella query seguente l'ordinamento della query nidificata viene ignorato:

SELECT C2.FirstName, C2.LastName
    FROM (SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName) as C2

Esempio

Nella query Entity SQL seguente viene usato l'operatore ORDER BY per specificare l'ordinamento usato per gli oggetti restituiti in un'istruzione SELECT. La query è basata sul modello Sales di AdventureWorks. Per compilare ed eseguire questa query, effettuare le operazioni seguenti:

  1. Seguire la procedura indicata in How to: Execute a Query that Returns StructuralType Results.

  2. Passare la query seguente come argomento al metodo ExecuteStructuralTypeQuery :

SELECT VALUE p FROM AdventureWorksEntities.Products 
    AS p ORDER BY p.ListPrice

Vedi anche