작성완료

MySQL GROUP BY 각 그룹 마지막 데이터 조회
MySQL에서 각 그룹의 마지막 데이터를 조회하기 위해, 서브쿼리를 사용하여 각 이름별 최대 날짜를 선택하고, 해당 이름과 값을 반환하는 쿼리를 작성하였다. 결과적으로 A는 21, B는 11, C는 18의 값을 가진다.
테이블 (tb_test)
SELECT * FROM tb_test;
| ID | NAME | VALUE | DATE |
|---|---|---|---|
| 1 | A | 14 | 2023-05-26 10:52:22 |
| 2 | A | 26 | 2023-05-26 10:52:25 |
| 3 | B | 9 | 2023-05-26 10:52:29 |
| 4 | C | 25 | 2023-05-26 10:52:32 |
| 5 | C | 18 | 2023-05-26 10:52:35 |
| 6 | B | 11 | 2023-05-26 10:52:37 |
| 7 | A | 21 | 2023-05-26 10:52:39 |
쿼리
SELECT NAME, VALUE
FROM tb_test
WHERE (NAME, DATE) IN (
SELECT NAME, MAX(DATE) AS DATE
FROM tb_test
GROUP BY NAME
)
ORDER BY NAME;
결과
| NAME | VALUE |
|---|---|
| A | 21 |
| B | 11 |
| C | 18 |