Condividi tramite


ORDER BY (Entity SQL)

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

[ 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. Questo valore è quello predefinito.
  • 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 n
    I primi n 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.

-- In the following sample, order is guaranteed to be preserved:
SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName

-- In the following query ordering of the nested query is ignored.
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, utilizzare 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 utilizzate in una clausola ORDER BY:

  • CROSS

  • FULL

  • KEY

  • LEFT

  • ORDER

  • OUTER

  • RIGHT

  • ROW

  • VALUE

Ordinamento di query nidificate

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

-- The following query will order the results by the last name.
SELECT C1.FirstName, C1.LastName
        FROM AdventureWorks.Contact as C1
        ORDER BY C1.LastName

-- In the following query, ordering of the nested query is ignored.
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 utilizzato l'operatore ORDER BY per specificare l'ordinamento utilizzato 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 Procedura: eseguire una query che restituisce risultati StructuralType (EntityClient).

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

SELECT VALUE p FROM AdventureWorksEntities.Product 
    AS p order by p.ListPrice

Di seguito viene riportato l'output:

ProductID: 1
Name: Adjustable Race
ProductNumber: AR-5381
MakeFlag: False
ProductID: 2
Name: Bearing Ball
ProductNumber: BA-8327
MakeFlag: False
ProductID: 3
Name: BB Ball Bearing
ProductNumber: BE-2349
MakeFlag: True
ProductID: 4
Name: Headset Ball Bearings
ProductNumber: BE-2908
MakeFlag: False
ProductID: 316
Name: Blade
ProductNumber: BL-2036
MakeFlag: True
...

Vedere anche

Riferimento

SKIP (Entity SQL)
LIMIT (Entity SQL)
TOP (Entity SQL)

Concetti

Espressioni di query (Entity SQL)
Riferimenti a Entity SQL