> 데이터 베이스 > MySQL 튜토리얼 > MySQL의 GROUP BY 및 ORDER BY를 사용하여 각 발신자로부터 가장 최근 이메일을 검색하는 방법은 무엇입니까?

MySQL의 GROUP BY 및 ORDER BY를 사용하여 각 발신자로부터 가장 최근 이메일을 검색하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-12 13:57:46
원래의
1037명이 탐색했습니다.

How to Retrieve the Most Recent Email from Each Sender Using MySQL's GROUP BY and ORDER BY?

MySQL의 GROUP BY, ORDER BY 절에 대한 자세한 설명과 적용

MySQL 데이터베이스의 데이터 테이블로 작업할 때는 GROUP BYORDER BY 절의 상호 작용을 이해하는 것이 중요합니다. 다음 시나리오를 고려해보세요.

각 발신자로부터 최신 이메일을 검색할 목적으로 발신자의 이메일 주소별로 이메일 표의 행을 그룹화해야 합니다. 그러나 다음 쿼리는:

SELECT 
    `timestamp`, `fromEmail`, `subject`
FROM `incomingEmails` 
GROUP BY LOWER(`fromEmail`) 
ORDER BY `timestamp` DESC
로그인 후 복사

은 잘못된 결과를 생성합니다. 보낸 사람별로 이메일을 그룹화하지만 각 그룹의 최신 주제를 표시하지 않을 수 있습니다. 결과는 다음과 같습니다:

<code>fromEmail: [email protected], subject: hello
fromEmail: [email protected], subject: welcome</code>
로그인 후 복사

실제 데이터에는 다음이 포함됩니다.

<code>fromEmail: [email protected], subject: hello
fromEmail: [email protected], subject: programming question
fromEmail: [email protected], subject: welcome</code>
로그인 후 복사

해결책: 하위 쿼리 및 ANY_VALUE() 함수 사용

이 문제를 해결하려면 ANY_VALUE() 함수와 함께 하위 쿼리를 사용할 수 있습니다.

SELECT * 
FROM ( 
    SELECT `timestamp`, `fromEmail`, ANY_VALUE(`subject`) AS `subject`
    FROM `incomingEmails` 
    ORDER BY `timestamp` DESC
) AS tmp_table 
GROUP BY LOWER(`fromEmail`)
로그인 후 복사

MySQL 5.7 이상에서 ANY_VALUE()을 사용하면 GROUP BY 절이 있는 SELECT 문에서 집계되지 않은 열을 사용할 수 있습니다. 각 그룹에서 값을 무작위로 선택하여 하위 쿼리가 각 보낸 사람의 이메일 주소에 대한 가장 최근 제목을 검색하도록 합니다.

위 내용은 MySQL의 GROUP BY 및 ORDER BY를 사용하여 각 발신자로부터 가장 최근 이메일을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿