SQL을 사용하여 최신 사용자 활동 기록을 효율적으로 가져옵니다
이 기사에서는 SQL을 통해 데이터베이스를 쿼리하여 각 사용자의 최신 활동 기록 날짜를 얻는 방법을 살펴봅니다.
사용자 로그인 이벤트를 기록하는 데이터베이스 테이블이 있다고 가정해 보겠습니다.
用户名 | 日期 | 数值 |
---|---|---|
brad | 2010-01-02 | 1.1 |
fred | 2010-01-03 | 1.0 |
bob | 2009-08-04 | 1.5 |
brad | 2010-02-02 | 1.2 |
fred | 2009-12-02 | 1.3 |
쉬운 방법:
간단한 접근 방식은 내부 조인을 사용하여 사용자 이름과 최신 날짜를 일치시키는 것입니다.
<code class="language-sql">select t.username, t.date, t.value from MyTable t inner join ( select username, max(date) as MaxDate from MyTable group by username ) tm on t.username = tm.username and t.date = tm.MaxDate</code>
그러나 이 접근 방식은 동일한 날짜의 중복 기록으로 인해 문제가 발생할 수 있습니다.
창 기능 사용:
중복 기록 문제를 해결하려면 창 기능을 사용할 수 있습니다.
<code class="language-sql">select x.username, x.date, x.value from ( select username, date, value, row_number() over (partition by username order by date desc) as _rn from MyTable ) x where x._rn = 1</code>
이 쿼리는 행 분할과 ROW_NUMBER() 함수를 활용하여 각 사용자의 각 레코드에 순위를 할당하며, 가장 높은 순위는 최신 레코드를 나타냅니다. WHERE 절은 각 사용자의 가장 최근 활동을 나타내는 순위 1의 레코드만 선택되도록 보장합니다.
위 내용은 SQL을 사용하여 최신 사용자 활동 기록을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!