[SQL] 그룹화 MySQL의 데이터에서 최신 날짜를 가져옵니다
SQL그룹화 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
해결법
-
==============================
1.각 모델의 최대 날짜를 찾고 계십니까?
각 모델의 최대 날짜를 찾고 계십니까?
SELECT model, max(date) FROM doc GROUP BY model
경우에 당신은 전체 테이블의 최대 날짜를 일치하는 모든 모델을 찾고 ...
SELECT model, date FROM doc WHERE date IN (SELECT max(date) FROM doc)
[--- 추가 ---]
(영업의 요구대로하지 요약 자료) 각 모델 그룹 내 최신 날짜와 일치하는 모든 레코드의 세부 사항을 표시 할 사람들을 위해 :
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;
-
==============================
2.당신은 최대 () 하위 쿼리에, 이런 식으로 뭔가를 사용하여 시도 할 수 있습니다 :
당신은 최대 () 하위 쿼리에, 이런 식으로 뭔가를 사용하여 시도 할 수 있습니다 :
SELECT model, date FROM doc WHERE date in (SELECT MAX(date) from doc GROUP BY model);
-
==============================
3.하위 쿼리는 날짜를 제공합니다. 우리는 모델과 연결되지 않습니다. 그래서 아래 쿼리는 문제를 해결한다.
하위 쿼리는 날짜를 제공합니다. 우리는 모델과 연결되지 않습니다. 그래서 아래 쿼리는 문제를 해결한다.
중복 된 날짜가있는 경우 / 모델은 다음과 같은 쿼리를 방지 할 수 있습니다.
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
-
==============================
4.이 시도:
이 시도:
SELECT model, date FROM doc WHERE date = (SELECT MAX(date) FROM doc GROUP BY model LIMIT 0, 1) GROUP BY model
-
==============================
5.다른 열이 최대 (날짜)와 같은 행에서하게 나타날 것이라고는 보장이 없기 때문에 내 문제가 해결되지 않는 최대 (날짜)를 사용하고 있습니다. 대신이 하나가 올바른 순서로 내 문제와 정렬 된 그룹을 해결하고 최대 날짜가 같은 다른 열의 값이 동일한 행에서 것을의 :
다른 열이 최대 (날짜)와 같은 행에서하게 나타날 것이라고는 보장이 없기 때문에 내 문제가 해결되지 않는 최대 (날짜)를 사용하고 있습니다. 대신이 하나가 올바른 순서로 내 문제와 정렬 된 그룹을 해결하고 최대 날짜가 같은 다른 열의 값이 동일한 행에서 것을의 :
SELECT model, date FROM (SELECT * FROM doc ORDER BY date DESC) as sortedTable GROUP BY model
-
==============================
6.이 작업을해야합니다 :
이 작업을해야합니다 :
SELECT model, date FROM doc GROUP BY model ORDER BY date DESC
그것은 단지 종류의 마지막에서 첫번째로하고 그룹화하여 날짜는 첫 번째 하나를 잡고.
-
==============================
7.그리고 왜이 사용 하는가?
그리고 왜이 사용 하는가?
SELECT model, date FROM doc ORDER BY date DESC LIMIT 1
from https://stackoverflow.com/questions/8470311/get-the-latest-date-from-grouped-mysql-data by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 연속 날짜를 감지하는 것은 SQL을 사용하여 범위 (0) | 2020.04.25 |
---|---|
[SQL] CASE 대 디코드 (0) | 2020.04.25 |
[SQL] SQL 동적 열 이름을 생성하는? (0) | 2020.04.25 |
[SQL] MySQL은, 연결하여 두 개의 열 (0) | 2020.04.25 |
[SQL] 이 별도의 열로 두 SQL 쿼리의 결과를 결합 (0) | 2020.04.25 |