ホームページ > データベース > mysql チュートリアル > Access SQL で各ユーザーの上位 N レコードを取得する方法

Access SQL で各ユーザーの上位 N レコードを取得する方法

Linda Hamilton
リリース: 2025-01-07 17:32:41
オリジナル
900 人が閲覧しました

How to Retrieve the Top N Records for Each User in Access SQL?

Access SQL: ユーザーごとの上位 N レコードの抽出

このガイドでは、単一の SQL クエリを使用して、Access データベース内の各ユーザーの最新レコードの上位 3 つを取得する方法を説明します。 このタスクにはネストされたクエリを利用します。

データベース構造

私たちのデータベースは 2 つのテーブルで構成されています:

  • ユーザーテーブル: LoginIDForenameSurnameDOBGuardian ForenameGuardian SurnameTelephone Number
  • 進捗表: ProgressIDLoginIDScoreDate Taken

解決策: ネストされたクエリ

単一クエリ内で TOP N を使用する単純なアプローチは、Access SQL では、この特定の要件 (グループごとに上位 N を取得する) に対して直接サポートされていません。 代わりに、サブクエリを使用してこれを実現します。

内部クエリは、各 Date Taken の上位 3 つの LoginID 値を特定します。

<code class="language-sql">SELECT TOP 3 PR2.[Date Taken]
FROM Progress AS PR2
WHERE PR2.LoginID = PR1.LoginID
ORDER BY PR2.[Date Taken] DESC</code>
ログイン後にコピー

この結果セットは、外側のクエリの IN 句で Progress テーブルをフィルタリングするために使用されます。

<code class="language-sql">SELECT PR1.LoginID, PR1.Score, PR1.[Date Taken]
FROM Progress AS PR1
WHERE PR1.[Date Taken] IN (
    SELECT TOP 3 PR2.[Date Taken]
    FROM Progress AS PR2
    WHERE PR2.LoginID = PR1.LoginID
    ORDER BY PR2.[Date Taken] DESC
)
ORDER BY PR1.LoginID, PR1.[Date Taken] DESC;</code>
ログイン後にコピー

この最後のクエリは、LoginID ごとに 3 つの最新レコードを効率的に返します。LoginID の順に、次に Date Taken の順に降順 (最新のものから順) に整然と並べられています。 これにより、Access SQL 内のグループ化されたデータに TOP N を直接適用する際の制限が回避されます。

以上がAccess SQL で各ユーザーの上位 N レコードを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート