ALL、DISTINCT、DISTINCTROW、TOP 述語

ALL、DISTINCT、DISTINCTROW、TOP 述語

クエリで選択されたレコード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

重複するフィールドではなく、重複するレコード全体に基づいてデータを除外します。 たとえば、[得意先コード] フィールドの [得意先] テーブルと [受注] テーブルを結合するクエリを作成できます。 [得意先] テーブルには重複する [得意先 ID] フィールドが含まれていますが、[受注] テーブルは、各得意先が複数の注文を持つ場合に発生します。 次の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 人の学生の名前が必要なとします。

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 句で指定された範囲の一番上または一番下にあるレコードの特定のパーセンテージを返す場合にも使用できます。 上位 25 人の学生の代わりに、クラスの下位 10% が必要なとします。

SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;

ASC 述語は、下位の値の戻り値を指定します。 TOP の後に続く値は、符号なし整数でなければなりません。

TOP は、クエリが更新可能かどうかには影響を与えられない。

table

レコードを取得するテーブルの名前。



ヘルプを表示

Office のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×