MySQL 쿼리: MAX() Group By
MySQL에서 GROUP BY 절은 지정된 값에서 동일한 값을 가진 행을 결합하는 데 사용됩니다. MAX() 함수는 그룹 내에서 지정된 열의 최대값을 반환하는 반면 group.
문제 설명
다음 열이 포함된 테이블이 제공됩니다.
목표는 각 고유한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!