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