Maison >base de données >tutoriel mysql >Comment récupérer les N premiers enregistrements pour chaque utilisateur dans Access SQL ?

Comment récupérer les N premiers enregistrements pour chaque utilisateur dans Access SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-07 17:32:41882parcourir

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

Access SQL : extraction des N premiers enregistrements par utilisateur

Ce guide montre comment récupérer les trois enregistrements les plus récents pour chaque utilisateur dans une base de données Access à l'aide d'une seule requête SQL. Nous exploiterons les requêtes imbriquées pour cette tâche.

Structure de la base de données

Notre base de données se compose de deux tables :

  • Tableau utilisateur : LoginID, Forename, Surname, DOB, Guardian Forename, Guardian Surname, Telephone Number
  • Tableau de progression : ProgressID, LoginID, Score, Date Taken

La solution : les requêtes imbriquées

Une approche simple utilisant TOP N dans une seule requête n'est pas directement prise en charge dans Access SQL pour cette exigence spécifique (récupération des N premiers pour chaque groupe). Au lieu de cela, nous utiliserons une sous-requête pour y parvenir :

La requête interne identifie les trois premières Date Taken valeurs pour chaque 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>

Cet ensemble de résultats est ensuite utilisé dans la clause IN de la requête externe pour filtrer la table 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>

Cette requête finale renvoie efficacement les trois enregistrements les plus récents pour chaque LoginID, soigneusement classés par LoginID puis par Date Taken par ordre décroissant (le plus récent en premier). Cela évite les limitations liées à l'application directe de TOP N aux données groupées dans Access SQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn