MySQL의 GROUP BY 이름 앞의 ORDER BY 날짜 및 시간
MySQL에서는 GROUP BY 절 앞에 ORDER BY 절이 적용됩니다. 그러나 특정 시나리오에서는 사용자가 이름 열에서 GROUP BY를 수행하기 전에 날짜 및 시간 필드별로 데이터를 정렬해야 합니다.
다음 표를 고려하세요.
name | date | time |
---|---|---|
tom | 2011-07-04 | 01:09:52 |
tom | 2011-07-04 | 01:09:52 |
mad | 2011-07-04 | 02:10:53 |
mad | 2009-06-03 | 00:01:01 |
목표는 다음과 같습니다. 가장 오래된 이름을 먼저 검색하세요. 다음 쿼리는 실패합니다.
SELECT * ORDER BY date ASC, time ASC GROUP BY name
ORDER BY보다 먼저 GROUP BY를 적용하여 정렬하기 전에 이름이 같은 레코드를 그룹화하기 때문입니다. 결과적으로 예상한 순서가 달성되지 않습니다.
해결책:
이 문제를 해결하려면 다음 접근 방식을 활용할 수 있습니다.
SELECT * FROM ( SELECT * FROM table_name ORDER BY date ASC, time ASC ) AS sub GROUP BY name
이 쿼리에서:
이 방법을 사용하면 정렬된 결과 집합에 GROUP BY가 적용되어 날짜 및 시간에 관계없이 가장 오래된 이름이 먼저 검색됩니다. 필드입니다.
위 내용은 MySQL에서 이름별로 그룹화하기 전에 날짜 및 시간별로 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!