ALL、DISTINCT、DISTINCTROW、TOP 述語

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

これらの述語を使用して、SQL クエリで選択するレコードを指定します。

構文

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM table

これらの述語を含む SELECT ステートメントには、次の部分があります。

引数 説明
ALL 別の述語を含めない場合、Access では ALL が想定されます。 Access データベース エンジンは、SQL ステートメントの条件を満たすすべてのレコードを選択します。 これらの例は同等であり、 Employees テーブルからすべてのレコードを返します。 SELECT ALL * FROM Employees ORDER BY EmployeeID;SELECT * FROM Employees ORDER BY EmployeeID;
DISTINCT 選択したフィールドに重複データを含むレコードを省略します。 結果にレコードを含める場合、 SELECT ステートメントの各フィールドの値は一意である必要があります。 たとえば、 Employees テーブル内の複数の従業員が同じ姓を持つ場合があります。 LastName フィールドに 2 つのレコードにSmithが含まれている場合、SELECT DISTINCT LastName FROM Employees;Smithを含む 1 つのレコードのみを返します。 DISTINCTを省略すると、クエリは両方のSmithレコードを返します。 SELECT句に複数のフィールドが含まれている場合、レコードを結果に表示するには、すべてのフィールドの値の組み合わせが一意である必要があります。 DISTINCTを使用するクエリの出力は更新可能ではなく、他のユーザーによる後の変更は反映されません。
DISTINCTROW 重複フィールドだけでなく、重複レコード全体に基づいてデータを省略します。 たとえば、CustomerID フィールドでCustomersテーブルとOrders テーブルを結合するクエリを作成できます。 Customersテーブルには重複するCustomerIDフィールドはありませんが、各顧客が多数の注文を持つ可能性があるため、Ordersテーブルは同じになります。 SELECT DISTINCTROW CompanyName FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID ORDER BY CompanyName; は、少なくとも 1 つの注文を持つ企業の一覧を生成しますが、それらの注文に関する詳細は含まれません。 DISTINCTROWを省略すると、複数の注文を持つ会社ごとに複数の行がクエリによって生成されます。 DISTINCTROW は、クエリで使用されるテーブルの一部 (すべてではない) からフィールドを選択した場合にのみ有効です。 クエリに含まれるテーブルが 1 つだけの場合、またはすべてのテーブルからフィールドを出力する場合、Access は DISTINCTROW を無視します。
TOP n [PERCENT] ORDER BY 句が指定する範囲の上部または下部にある特定の数のレコードを返します。 2003 年のクラスの上位 25 人の学生の名前が必要であるとします。SELECT TOP 25 FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage DESC;ORDER BY 句を含めない場合、クエリは WHERE 句を満たすStudents テーブルから任意の 25 個のレコードセットを返します。 TOP述語は、等しい値の中から選択しません。 前の例では、25 番目と 26 番目の最高グレードのポイント平均が同じ場合、クエリは 26 レコードを返します。 また、 PERCENT 予約語を使用して、 ORDER BY 句が指定する範囲の上部または下部にあるレコードの割合を返すこともできます。 たとえば、クラスの下位 10% が必要な場合は、 SELECT TOP 10 PERCENT FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage ASC; を使用します。 ASC 述語は、下位の値を返します。 TOPに続く値は符号なし整数である必要があります。 TOP は、クエリが更新可能かどうかに影響しません。
table Access がレコードを取得するテーブルの名前。