> 데이터 베이스 > MySQL 튜토리얼 > MAX() 및 GROUP BY를 사용하여 MySQL의 각 고유 RID에 대한 최신 행의 PID를 검색하는 방법은 무엇입니까?

MAX() 및 GROUP BY를 사용하여 MySQL의 각 고유 RID에 대한 최신 행의 PID를 검색하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-31 01:29:12
원래의
456명이 탐색했습니다.

How to Retrieve the PID of the Latest Row for Each Unique RID in MySQL Using MAX() and GROUP BY?

MySQL 쿼리: MAX() Group By

MySQL에서 GROUP BY 절은 지정된 값에서 동일한 값을 가진 행을 결합하는 데 사용됩니다. MAX() 함수는 그룹 내에서 지정된 열의 최대값을 반환하는 반면 group.

문제 설명

다음 열이 포함된 테이블이 제공됩니다.

  • pid(자동 증가 기본 키)
  • 타임스탬프(기본값이 있는 타임스탬프)
  • 비용 (정수)
  • rid(정수)

목표는 각 고유한 Rid에 대한 최신 행의 PID를 검색하는 것입니다. 예상되는 출력은 다음과 같습니다.

pid MAX(timestamp) rid
5 2011-04-14 01:06:06 1
3 2011-04-14 01:05:41 2
7 2011-04-14 01:14:14 3

초기 쿼리

문제를 해결하기 위해 다음 쿼리가 시도되었습니다.

SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
로그인 후 복사

그러나, 이 쿼리는 최신 값 대신 처음으로 나타나는rid 값의 PID를 선택했기 때문에 잘못된 PID를 반환했습니다. 타임스탬프.

솔루션 쿼리

원하는 결과를 얻으려면 다음 쿼리를 사용할 수 있습니다.

SELECT pid, MAX(timestamp), rid
FROM (
    SELECT pid, timestamp, rid,
        ROW_NUMBER() OVER (PARTITION BY rid ORDER BY timestamp DESC) AS rn
    FROM theTable
) AS subquery
WHERE rn = 1
GROUP BY rid
로그인 후 복사

설명

이 쿼리는 하위 쿼리를 사용하여 각 제거에 대한 행의 순위를 매깁니다. ROW_NUMBER() 함수를 사용하여 타임스탬프의 내림차순으로 정렬합니다. rn 열은 각 행에 순위를 할당합니다. 여기서 1은 각 제거의 최신 타임스탬프가 있는 행을 나타냅니다.

그런 다음 외부 쿼리는 rn이 1인 행만 포함하도록 결과를 필터링하여 각 제거의 최신 행이 선택됩니다. pid, MAX(timestamp) 및rid 값은rid별로 그룹화되어 원하는 출력을 생성합니다.

위 내용은 MAX() 및 GROUP BY를 사용하여 MySQL의 각 고유 RID에 대한 최신 행의 PID를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿