> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 그룹화하기 전에 결과를 정렬하는 방법은 무엇입니까?

MySQL에서 그룹화하기 전에 결과를 정렬하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-11 18:04:03
원래의
929명이 탐색했습니다.

How to Order Results Before Grouping in MySQL?

Group By 전 MySQL 순서

MySQL에서 GROUP BY 절을 실행하면 일반적으로 그룹이 형성된 후 결과가 정렬됩니다. 그러나 그룹화하기 전에 결과를 정렬하려는 시나리오가 있습니다.

다음 쿼리를 고려하세요.

SELECT wp_posts.*
FROM wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
ORDER BY wp_posts.post_date DESC
로그인 후 복사

이 쿼리는 각 작성자의 최신 게시물을 찾은 다음 작성자를 그룹화하는 것을 목표로 합니다. 결과. 그러나 문제는 결과를 그룹화하기 전이 아니라 그룹화한 후에 정렬한다는 것입니다.

해결책

그룹화하기 전에 결과를 정렬하려면 다음 접근 방식을 사용할 수 있습니다.

SELECT wp_posts.*
FROM wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
HAVING wp_posts.post_date = MAX(wp_posts.post_date)
ORDER BY wp_posts.post_date DESC
로그인 후 복사

HAVING 절을 사용하면 그룹화하기 전에 각 작성자의 최신 게시물만 선택됩니다.

대체 솔루션

HAVING 절이 실현 가능하지 않은 경우(예: Postgres 또는 SQL Server) 다음 대체 솔루션을 사용할 수 있습니다.

SELECT
    wp_posts.*
FROM
    wp_posts
JOIN
    (
        SELECT
            g.post_author,
            MAX(g.post_date) AS post_date
        FROM wp_posts AS g
        WHERE
            g.post_status='publish'
            AND g.post_type='post'
        GROUP BY g.post_author
    ) AS t
    ON wp_posts.post_author = t.post_author AND wp_posts.post_date = t.post_date
ORDER BY wp_posts.post_date
로그인 후 복사

이 쿼리는 하위 쿼리를 사용하여 각 작성자의 최대 게시 날짜를 찾은 다음 이를 실제 게시물 기록을 검색하기 위한 원본 테이블입니다.

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

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