次の方法で共有


ORDER BY 句 (Microsoft Access SQL)

適用先: Access 2013 | Access 2016

クエリの結果得られたレコードを、指定した 1 つまたは複数のフィールドで昇順または降順に並べ替えます。

構文

SELECT フィールドリスト FROM テーブル WHERE selectcriteria [ORDER BY field1 [ASC |DESC ][, field2 [ASC |DESC ]][, ...]]]

ORDER BY 句を使用する SELECT ステートメントには、次の指定項目があります。

指定項目 説明
fieldlist 取得する 1 つ以上のフィールドの名前。フィールド名の別名、SQL 集計関数、選択述語 (ALL、DISTINCT、DISTINCTROW、および TOP) などの SELECT ステートメント オプションも指定できます。
table データを取得するテーブルの名前。 詳細については、「FROM 句」を参照してください。
selectcriteria 抽出条件。 ステートメントに WHERE 句が含まれている場合、Microsoft Access データベース エンジンは WHERE 句の条件に従ってレコードを抽出した後に値を並べ替えます。
field1field2 レコードの並べ替えに使用するフィールドの名前。

解説

ORDER BY 句は省略可能です。 ただし、データを並べ替えて表示する場合は ORDER BY 句が必要です。

並べ替え順序を指定しない場合は、昇順 (A ~ Z、0 ~ 9、あ~ん) になります。 次のどちらの例も、名前順に社員を並べ替えます。

SELECT LastName, FirstName 
FROM Employees 
ORDER BY LastName; 
SELECT LastName, FirstName 
FROM Employees 
ORDER BY LastName ASC;

降順 (Z ~ A、9 ~ 0、ん~あ) で並べ替えるには、並べ替える各フィールドの後に予約語 DESC を記述します。 次の例では、並べ替えるフィールドとして Salary フィールドを選択し、降順に並べ替えます。

SELECT LastName, Salary 
FROM Employees 
ORDER BY Salary DESC, LastName;

ORDER BY 句でメモ型 (Memo) または OLE オブジェクト型 (OLE Object) データのあるフィールドを指定した場合は、エラーになります。 Microsoft Jet データベース エンジンでは、メモ型 (Memo) および OLE オブジェクト型 (OLE Object) のフィールドを並べ替えることはできません。

通常は、ORDER BY 句は SQL ステートメントの一番最後に記述します。

ORDER BY 句には、追加のフィールドを含めることができます。 レコードは、ORDER BY の後に一覧表示される最初のフィールドで最初に並べ替えられます。 そのフィールドの値が等しいレコードは、リストされている 2 番目のフィールドの値で並べ替えられます。

次の使用例に示す SQL ステートメントでは、ORDER BY 句を使用してレコードを名前の降順 (Z ~ A) で並べ替えます。 EnumFields プロシージャを呼び出しますが、このプロシージャについては、SELECT ステートメントの使用例を参照してください。

Sub OrderByX() 
 
    Dim dbs As Database, rst As Recordset 
 
    ' Modify this line to include the path to Northwind 
    ' on your computer. 
    Set dbs = OpenDatabase("Northwind.mdb") 
 
    ' Select the last name and first name values from  
    ' the Employees table, and sort them in descending  
    ' order. 
    Set rst = dbs.OpenRecordset("SELECT LastName, " _ 
        & "FirstName FROM Employees " _ 
        & "ORDER BY LastName DESC;") 
     
    ' Populate the Recordset. 
    rst.MoveLast 
     
    ' Call EnumFields to print recordset contents. 
    EnumFields rst, 12 
 
    dbs.Close 
 
End Sub

投稿者について

Community Member Icon the ElevateAccess コミュニティによって提供されるリンク

UtterAccess は非常に優れた Microsoft Access wiki およびヘルプ フォーラムです。

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。