Access SQL에서 사용자 그룹별 최신 레코드 3개를 효율적으로 검색
데이터베이스 관리에는 특정 데이터 하위 집합 검색이 포함되는 경우가 많습니다. 테스트 점수 추적과 같은 시나리오에서는 각 개별 사용자에 대해 가장 최근 항목 3개를 추출해야 할 수도 있습니다. 이 작업은 겉으로는 간단해 보이지만 최근 기록 선택과 사용자별 데이터 그룹화를 결합하는 정교한 SQL 쿼리가 필요합니다.
다음 SQL 쿼리는 해결책을 제공합니다.
<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 PR2 WHERE PR2.LoginID = PR1.LoginID ORDER BY PR2.[Date Taken] DESC ) ORDER BY LoginID, [Date Taken] DESC;</code>
쿼리 분석:
이 쿼리는 원하는 결과를 얻기 위해 기본 쿼리(외부 쿼리) 내의 하위 쿼리(내부 쿼리)를 활용합니다.
하위 쿼리: 이 중첩 쿼리는 각 고유 LoginID
에 대해 가장 최근의 "촬영 날짜" 값 3개를 식별합니다. 이를 수행하는 방법은 다음과 같습니다.
[Date Taken]
값 3개를 선택합니다.Progress
)의 PR2
와 일치하는 레코드만 포함하도록 LoginID
테이블(PR1.LoginID
)을 필터링합니다.[Date Taken]
기준으로 내림차순으로 결과를 정렬합니다.기본 쿼리: 그런 다음 기본 쿼리는 Progress
연산자를 사용하여 PR1
테이블(IN
)을 필터링합니다. 이 연산자는 하위 쿼리의 결과 집합에 [Date Taken]
값이 있는 레코드(예: 해당 사용자의 가장 최근 날짜 3개)만 포함되도록 합니다. 마지막으로 결과는 LoginID
순으로 정렬된 다음 [Date Taken]
(내림차순)으로 정렬되어 읽기 쉽습니다.
이 접근 방식은 각 사용자의 가장 최근 점수 3개를 효율적으로 검색하여 [Date Taken]
필드의 잠재적 동점을 효과적으로 처리합니다. 하위 쿼리와 IN
연산자를 결합하면 이러한 일반적인 데이터베이스 문제에 대한 간결하고 강력한 솔루션을 제공합니다.
위 내용은 Access SQL에서 사용자 그룹당 상위 3개의 최근 레코드를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!