내 db에 다음이 있습니다.
ID datetime type value
1094 2013-09-25 09:11:18 HDD 89%
1094 2013-09-25 09:11:18 CPU 55%
1093 2013-09-25 09:11:18 HDD 77%
1093 2013-09-25 09:11:18 CPU 55%
1094 2013-09-25 08:21:28 HDD 85%
1094 2013-09-25 08:21:28 CPU 11%
1093 2013-09-25 07:04:00 HDD 76%
모든 ID 및 유형 레코드에 대한 마지막 날짜를 얻고 싶습니다.
1094 2013-09-25 09:11:18 HDD 89%
1094 2013-09-25 09:11:18 CPU 55%
1093 2013-09-25 09:11:18 HDD 77%
1093 2013-09-25 09:11:18 CPU 55%
해결 방법
GROUP BY
를 사용할 수 있지만 작동 방식을 이해하는 것이 중요합니다.
GROUP BY
를 사용하면 행 그룹이 하나로 축소되고 GROUP BY
절에서 사용되지 않는 다른 열에 표시되는 내용은 다음을 사용하여 결정됩니다. 집계 함수 또는 해당 그룹의 임의의 행입니다. MAX ()
값 또는 사용한 집계 함수를 포함하는 표시된 행에 해당하는 행을 가져올 수 없습니다. 이는 다음과 같은 쿼리를 수행 할 때 특히 분명해집니다.
SELECT id, MIN(whatever), MAX(whatever), another_column
FROM your_table
GROUP BY id
"another_column"은 MIN () 값 또는 MAX () 값을 보유한 행 또는 전혀 표시되지 않는 다른 행에 속할 수 있습니다. MySQL 이외의 다른 RDBMS에서는 사용자가 실수를하거나 올바른 결과를 얻었다 고 생각하는 것을 방지하기 위해 집계 함수를 사용하지 않거나 GROUP BY
절에 나열되지 않은 열을 선택하는 것이 실제로 금지되어 있습니다. .
따라서 귀하의 경우에는 "값"열도 표시하려는 것 같습니다. 위의 이유로 juergen_d의 대답은 잘못된 것입니다. "값"을 선택하지 않았기 때문입니다. 선택하면 올바른 "값"인지 확신 할 수 없습니다. Filipe Silva의 대답은 "가치"로 그룹화되기 때문에 잘못되었습니다. 이렇게하면 실제로 전체 테이블이 반환됩니다. Romesh의 대답은 잘못된 것입니다. MAX ()
함수를 두 번 사용하면 분명히 최대 값을 얻을 수 있지만 datetime 값에 해당하는 값은 얻지 못하기 때문입니다.
참조 페이지 https://stackoverflow.com/questions/19514532
'MySql' 카테고리의 다른 글
MySQL Windows 8.1로 업데이트 한 후 MySQL이 작동하지 않음 (0) | 2020.12.19 |
---|---|
MySQL mysql 데이터베이스가 xampp 1.8.3에서 작동하지 않습니다. (0) | 2020.12.19 |
MySQL Calculate age based on date of birth (0) | 2020.12.19 |
MySQL Sum 및 Case를 사용하는 MySQL (0) | 2020.12.19 |
MySQL LOAD DATA INFILE 오류 1064 (0) | 2020.12.19 |
댓글