본문 바로가기
MySql

MySQL mysql에서 union 및 order by 절 사용

by 베이스 공부 2020. 11. 12.
반응형

mysql 쿼리에서 union과 함께 order by를 사용하고 싶습니다. I am fetching different types of record based on different criteria from a table based on distance for a search on my site. The first select query returns data related to the exact place search . The 2nd select query returns data related to distance within 5 kms from the place searched. 세 번째 선택 쿼리는 검색된 장소에서 5-15km 이내의 거리와 관련된 데이터를 반환합니다.

그런 다음 Union을 사용하여 모든 결과를 병합하고 페이지에 페이지를 표시합니다. '정확한 검색 결과', '5km 이내의 결과' 등과 같은 적절한 제목 아래

이제 id 또는 add_date를 기준으로 결과를 정렬하고 싶습니다. 그러나 쿼리 끝에 order by 절을 추가하면 (query1 union query 2 union query 3 order by add_date). 모든 결과를 정렬합니다. 그러나 내가 원하는 것은 각 제목 아래에 정렬되어야한다는 것입니다.

 

해결 방법

 

다른 기준으로 정렬하기 전에 먼저 정렬 할 수있는 각 선택 항목에 순위라는 가상 열을 추가하여이를 수행 할 수 있습니다.

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
) a
order by rank, id, add_date desc

 

참조 페이지 https://stackoverflow.com/questions/3531251

 

 

반응형

댓글