그룹화된 MySQL 데이터에서 최신 날짜 가져오기
데이터베이스에 다음 데이터가 있습니다.
|NO | model | date |
+---+-------+----------+
|1 | bee |2011-12-01|
|2 | bee |2011-12-05|
|3 | bee |2011-12-12|
|4 | tar |2011-12-13|
각 모델 그룹의 최신 날짜를 알고 싶습니다.
| model | date |
+-------+----------+
| bee |2011-12-12|
| tar |2011-12-13|
나는 시도했다.
SELECT model, date
FROM doc
WHERE date ........????? //what is the next?
GROUP BY model
각 모델의 최대 날짜를 찾으시나요?
SELECT model, max(date) FROM doc
GROUP BY model
전체 테이블의 최대 날짜와 일치하는 모든 모델을 찾고 있다면...
SELECT model, date FROM doc
WHERE date IN (SELECT max(date) FROM doc)
[--- 추가됨 ---]
각 모델 그룹 내 최신 날짜와 일치하는 모든 레코드의 세부 정보를 표시하려는 경우(OP에서 요청한 요약 데이터가 아님):
SELECT d.model, d.date, d.color, d.etc FROM doc d
WHERE d.date IN (SELECT max(d2.date) FROM doc d2 WHERE d2.model=d.model)
MySQL 8.0 이후에서는OVER절을 사용하면 데이터 세트가 클수록 같은 결과를 더 빨리 얻을 수 있습니다.
SELECT model, date, color, etc FROM (SELECT model, date, color, etc,
max(date) OVER (PARTITION BY model) max_date FROM doc) predoc
WHERE date=max_date;
다음과 같은 서브쿼리에서 max()를 사용해 볼 수 있습니다.
SELECT model, date
FROM doc
WHERE date in (SELECT MAX(date) from doc GROUP BY model);
서브쿼리 제공 날짜모델과의 연계는 없습니다.따라서 아래 쿼리로 문제를 해결합니다.
중복된 날짜/모델이 있는 경우 다음 쿼리를 통해 피할 수 있습니다.
select t.model, t.date
from doc t
inner join (select model, max(date) as MaxDate from doc group by model)
tm on t.model = tm.model and t.date = tm.MaxDate
이것을 시험해 보세요.
SELECT model, date
FROM doc
WHERE date = (SELECT MAX(date)
FROM doc GROUP BY model LIMIT 0, 1)
GROUP BY model
max(날짜)를 사용해도 다른 열이 max(날짜)와 같은 행에 속한다는 보장이 없기 때문에 문제가 해결되지 않았습니다.대신 이 방법은 문제를 해결하고 올바른 순서로 그룹을 정렬하고 다른 열의 값은 최대 날짜와 같은 행에서 가져옵니다.
SELECT model, date
FROM (SELECT * FROM doc ORDER BY date DESC) as sortedTable
GROUP BY model
이 조작은 유효합니다.
SELECT model, date FROM doc GROUP BY model ORDER BY date DESC
마지막에서 첫 번째 날짜로 정렬하고 그룹화하여 첫 번째 날짜만 잡습니다.
그리고 왜 이것을 사용하지 않는가?
SELECT model, date FROM doc ORDER BY date DESC LIMIT 1
언급URL : https://stackoverflow.com/questions/8470311/get-the-latest-date-from-grouped-mysql-data
'programing' 카테고리의 다른 글
| MariaDB/MySQL 쿼리는 대소문자를 구분합니까? (0) | 2022.11.20 |
|---|---|
| 홀수 업데이트와 Java 업데이트의 차이점은 무엇입니까? (0) | 2022.11.20 |
| WordPress Shortcode에서 AJAX를 사용하는 방법 (0) | 2022.11.20 |
| for 루프 내에서 JavaScript 클릭 핸들러가 예상대로 작동하지 않음 (0) | 2022.11.20 |
| 플랫 어레이를 데이터베이스에 저장할 구분 문자열로 변환합니다. (0) | 2022.11.20 |