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
'MySql' 카테고리의 다른 글
MySQL Laravel 5 PDOException이 드라이버를 찾을 수 없음 (0) | 2020.11.12 |
---|---|
MySQL : 두 타임 스탬프의 차이를 초 단위로 얻는 방법 (0) | 2020.11.12 |
MySQL에서 null을 0으로 바꿉니다. (0) | 2020.11.12 |
MySQL 두 테이블 mysql을 조인하는 방법은 무엇입니까? (0) | 2020.11.12 |
MySQL 공통 MySQL 필드 및 해당 데이터 유형 (0) | 2020.11.12 |
댓글