>  기사  >  데이터 베이스  >  MySQL에서 이름별로 그룹화하기 전에 날짜 및 시간별로 정렬하는 방법은 무엇입니까?

MySQL에서 이름별로 그룹화하기 전에 날짜 및 시간별로 정렬하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-01 22:59:29449검색

How to Order by Date and Time Before Grouping by Name in MySQL?

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

이 쿼리에서:

  • 하위 쿼리는 행을 날짜별로 정렬한 다음 시간 오름차순으로 정렬하여 중간 결과 집합을 생성합니다.
  • 외부 쿼리는 하위 쿼리에서 모든 열을 선택합니다. 그리고 name 열에 대해 GROUP BY 연산을 수행합니다.

이 방법을 사용하면 정렬된 결과 집합에 GROUP BY가 적용되어 날짜 및 시간에 관계없이 가장 오래된 이름이 먼저 검색됩니다. 필드입니다.

위 내용은 MySQL에서 이름별로 그룹화하기 전에 날짜 및 시간별로 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.