ORDER BY (Entity SQL)

SELECT deyiminde döndürülen nesnelerde kullanılan sıralama düzenini belirtir.

Söz dizimi

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

Bağımsız değişkenler

order_by_expression Sıralanacak özelliği belirten geçerli bir sorgu ifadesi. Birden çok sıralama ifadesi belirtilebilir. ORDER BY yan tümcesindeki sıralama ifadelerinin sırası, sıralanmış sonuç kümesinin düzenini tanımlar.

COLLATE {collation_name} ORDER BY işleminin içinde collation_namebelirtilen harmanlama göre gerçekleştirilmesi gerektiğini belirtir. COLLATE yalnızca dize ifadeleri için geçerlidir.

ASC Belirtilen özellikteki değerlerin en düşük değerden en yüksek değere kadar artan düzende sıralanması gerektiğini belirtir. Bu varsayılan seçenektir.

DESC Belirtilen özellikteki değerlerin en yüksek değerden en düşük değere kadar azalan düzende sıralanması gerektiğini belirtir.

LIMIT n Yalnızca ilk n öğeler seçilir.

ATLA n İlk n öğeleri atlar.

Açıklamalar

ORDER BY yan tümcesi, SELECT yan tümcesinin sonucuna mantıksal olarak uygulanır. ORDER BY yan tümcesi, diğer adlarını kullanarak seçim listesindeki öğelere başvurabilir. ORDER BY yan tümcesi, şu anda kapsam içinde olan diğer değişkenlere de başvurabilir. Ancak, SELECT yan tümcesi DISTINCT değiştiricisi ile belirtilmişse ORDER BY yan tümcesi yalnızca SELECT yan tümcesinden diğer adlara başvurabilir.

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

ORDER BY yan tümcesindeki her ifade, sıralı eşitsizlik (küçük veya daha büyük vb.) için karşılaştırılabilir bir türe göre değerlendirilmelidir. Bu türler genellikle sayılar, dizeler ve tarihler gibi skaler temel öğelerdir. Karşılaştırılabilir türlerin RowType'ları da sırasıyla karşılaştırılabilir.

Kodunuz en üst düzey yansıtma dışında sıralı bir küme üzerinde yineleniyorsa, çıktının sırasının korunması garanti edilmez.

Aşağıdaki örnekte sıranın korunacağı garanti edilir:

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

Aşağıdaki sorguda iç içe sorgunun sıralanması yoksayılır:

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

Sıralı bir UNION, UNION ALL, EXCEPT veya INTERSECT işlemine sahip olmak için aşağıdaki deseni kullanın:

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

Kısıtlanmış anahtar sözcükler

Bir yan tümcede kullanıldığında ORDER BY aşağıdaki anahtar sözcükler tırnak içine alınmalıdır:

  • ÇAPRAZ

  • TAM

  • KEY

  • LEFT

  • SİPARİŞ

  • DIŞ

  • RIGHT

  • ROW

  • DEĞER

İç İçe Sorguları Sıralama

Entity Framework'te iç içe ifade sorgunun herhangi bir yerine yerleştirilebilir; iç içe sorgunun sırası korunmaz.

Aşağıdaki sorgu sonuçları soyadına göre sıralar:

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

Aşağıdaki sorguda iç içe sorgunun sıralanması yoksayılır:

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

Örnek

Aşağıdaki Entity SQL sorgusu, SELECT deyiminde döndürülen nesnelerde kullanılan sıralama düzenini belirtmek için ORDER BY işlecini kullanır. Sorgu AdventureWorks Satış Modeli'ni temel alır. Bu sorguyu derlemek ve çalıştırmak için şu adımları izleyin:

  1. Nasıl yapılır: StructuralType Sonuçları Döndüren Bir Sorgu Yürütme bölümündeki yordamı izleyin.

  2. Aşağıdaki sorguyu yöntemine ExecuteStructuralTypeQuery bağımsız değişken olarak geçirin:

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

Ayrıca bkz.