これらの述語を使用して、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 テーブル内の複数の従業員が同じ姓を持つ場合があります。 2 つのレコードの [LastName] フィールドに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 つのテーブルしか含まれていない場合や、すべてのテーブルからフィールドを出力する場合は、 DISTINCTROW は無視されます。 |
TOP n [PERCENT] |
ORDER BY句で指定した範囲の先頭または末尾にあるレコードの数を、特定の数で返します。 2003 年度のクラスの上位 25 人の学生の名前が必要なとします。 SELECT TOP 25 FirstName, LastName FROM Students WHERE GraduationYear = 2003 ORDER BY GradePointAverage DESC;ORDER BY 句を指定しない場合、クエリは、 Students テーブルから WHERE 句を満たす 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 がレコードを取得するテーブルの名前。 |