> 데이터 베이스 > MySQL 튜토리얼 > MySQL UNION 쿼리의 개별 섹션 내에서 결과를 정렬하려면 어떻게 해야 합니까?

MySQL UNION 쿼리의 개별 섹션 내에서 결과를 정렬하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-11 11:29:42
원래의
262명이 탐색했습니다.

How Can I Sort Results Within Separate Sections of a MySQL UNION Query?

MySQL UNION 쿼리에서 섹션별로 결과 정렬

소개:

UNION과 결합된 여러 SELECT 문을 사용하여 데이터를 쿼리하는 경우 각 쿼리의 독립성을 유지하면서 제목별로 결과를 적절하게 정렬해야 합니다.

질문:

한 가지 시나리오는 세 개의 SELECT 쿼리가 웹사이트 검색에 대한 서로 다른 거리 기준을 기반으로 데이터를 검색하는 것입니다. 첫 번째 쿼리는 정확한 위치 검색을 위한 데이터를 검색하고, 두 번째 쿼리는 5km 이내의 데이터를 검색하고, 세 번째 쿼리는 5~15km 이내의 데이터를 검색합니다. 쿼리 결과는 UNION을 사용하여 결합되어 제목과 함께 페이지에 표시됩니다. 그러나 사용자는 id 또는 add_date를 기준으로 각 제목 아래에 결과를 정렬하려고 합니다.

해결책:

이를 달성하기 위해 MySQL은 각 SELECT 문에 대해 "rank"라는 유사 열을 도입합니다. 이 의사 열은 다른 정렬 기준을 적용하기 전에 처음에 결과를 정렬하는 데 사용할 수 있습니다. 다음 수정된 쿼리는 이 접근 방식을 보여줍니다.

<code class="language-sql">SELECT *
FROM (
    SELECT 1 AS Rank, id, add_date FROM Table
    UNION ALL
    SELECT 2 AS Rank, id, add_date FROM Table WHERE distance < 5
    UNION ALL
    SELECT 3 AS Rank, id, add_date FROM Table WHERE distance BETWEEN 5 AND 15
) AS RankedResults
ORDER BY Rank ASC, id DESC, add_date DESC;</code>
로그인 후 복사

설명:

  1. 유사 열 "Rank": 각 SELECT 문에는 "Rank"라는 유사 열이 도입되고 고유 값(1, 2, 3)이 할당됩니다. 이 열은 결과의 순서 또는 그룹화를 나타냅니다.

  2. 초기 "순위" 정렬: UNION 결과는 처음에 "순위" 열을 기준으로 오름차순으로 정렬됩니다. 이렇게 하면 해당 제목("정확한 결과", "5km 이내의 결과" 및 "5-15km 이내의 결과")에 따라 결과가 그룹화됩니다.

  3. "id" 및 "add_date"를 기준으로 추가 정렬: 각 그룹("Rank"로 결정) 내에서 결과는 "id" 및 "add_date"를 기준으로 내림차순으로 추가 정렬됩니다.

참고:

이 방법은 결합된 결과에 중복 행을 포함하는 UNION ALL 연산을 사용합니다. 중복 행이 필요하지 않은 경우 UNION 작업을 사용하여 중복을 제거할 수 있습니다.

위 내용은 MySQL UNION 쿼리의 개별 섹션 내에서 결과를 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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