ORDER BY (Entity SQL)ORDER BY (Entity SQL)

SELECT ステートメントで返されるオブジェクトで使用される並べ替え順を指定します。Specifies the sort order used on objects returned in a SELECT statement.

構文Syntax

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

引数Arguments

order_by_expression
並べ替えるプロパティを指定する有効なクエリ式。Any valid query expression specifying a property on which to sort. 並べ替えのキーとなる式を複数指定できます。Multiple sort expressions can be specified. ORDER BY 句内に記述するキー式の並び順によって、並べ替えられた結果セットの構成が決まります。The sequence of the sort expressions in the ORDER BY clause defines the organization of the sorted result set.

COLLATE {collation_name}COLLATE {collation_name}
ORDER BY 操作が collation_nameで指定された照合順序に従って実行されることを指定します。Specifies that the ORDER BY operation should be performed according to the collation specified in collation_name. COLLATE は文字列式にのみ適用できます。COLLATE is applicable only for string expressions.

ASCASC
指定したプロパティの値が昇順、つまり小さい値から大きい値へと並べ替えられます。Specifies that the values in the specified property should be sorted in ascending order, from lowest value to highest value. 既定値です。This is the default.

DESCDESC
指定したプロパティの値が降順、つまり大きい値から小さい値へと並べ替えられます。Specifies that the values in the specified property should be sorted in descending order, from highest value to lowest value.

LIMIT nLIMIT n
最初の n 個の項目のみが選択されます。Only the first n items will be selected.

SKIP nSKIP n
最初の n 個の項目をスキップします。Skips the first n items.

RemarksRemarks

ORDER BY 句は、SELECT 句の結果に論理的に適用されます。The ORDER BY clause is logically applied to the result of the SELECT clause. ORDER BY 句では、別名を使用して選択リストの項目を参照できます。The ORDER BY clause can reference items in the select list by using their aliases. ORDER BY 句は、現在スコープ内にあるその他の変数も参照できます。The ORDER BY clause can also reference other variables that are currently in-scope. ただし、SELECT 句が DISTINCT 修飾子で指定されている場合は、ORDER BY 句は SELECT 句の別名のみを参照できます。However, if the SELECT clause has been specified with a DISTINCT modifier, the ORDER BY clause can only reference aliases from the SELECT clause.

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

ORDER BY 句内の各式は、順序付けられた不等号 (より小さい、より大きいなど) について比較できる型として評価される必要があります。Each expression in the ORDER BY clause must evaluate to some type that can be compared for ordered inequality (less than or greater than, and so on). 通常、これらの型は数値、文字列、日付などのスカラー プリミティブです。These types are generally scalar primitives such as numbers, strings, and dates. 比較できる型の RowType は順序も比較できます。RowTypes of comparable types are also order comparable.

順序付けされたセットで、最上位の投影を除きコードが反復処理を行う場合、出力でその順序が維持されることは保証されません。If your code iterates over an ordered set, other than for a top-level projection, the output is not guaranteed to have its order preserved.

次の例では、順序は維持されることが保証されています。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  

UNION、UNION ALL、EXCEPT、または INTERSECT 操作を順序付けするには、次のパターンを使用してください。To have an ordered UNION, UNION ALL, EXCEPT, or INTERSECT operation, use the following pattern:

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

制限付きのキーワードRestricted keywords

次のキーワードは ORDER BY 句で使用する場合には、引用符で囲む必要があります。The following keywords must be enclosed in quotation marks when used in an ORDER BY clause:

  • CROSSCROSS

  • FULLFULL

  • KEYKEY

  • 左方向 (←) キーLEFT

  • ORDERORDER

  • OUTEROUTER

  • 右方向 (→) キーRIGHT

  • ROWROW

  • VALUEVALUE

入れ子になったクエリの順序Ordering Nested Queries

Entity Framework では、入れ子になった式をクエリ内の任意の場所に配置できるため、入れ子になったクエリの順序は維持されません。In the Entity Framework, a nested expression can be placed anywhere in the query; the order of a nested query is not preserved.

次のクエリでは、結果を姓で並べ替えます。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  

Example

次の Entity SQLEntity SQL クエリでは、SELECT ステートメントで返されたオブジェクトの並べ替え順序の指定に ORDER BY 演算子を使用します。The following Entity SQLEntity SQL query uses the ORDER BY operator to specify the sort order used on objects returned in a SELECT statement. このクエリは、AdventureWorks Sales Model に基づいています。The query is based on the AdventureWorks Sales Model. このクエリをコンパイルして実行するには、次の手順を実行します。To compile and run this query, follow these steps:

  1. How to: Execute a Query that Returns StructuralType Results」の手順に従います。Follow the procedure in How to: Execute a Query that Returns StructuralType Results.

  2. 次のクエリを引数として ExecuteStructuralTypeQuery メソッドに渡します。Pass the following query as an argument to the ExecuteStructuralTypeQuery method:

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

関連項目See also