텍스트 열에 사용자 지정 우선 순위를 사용하여 주문


12

다음은 샘플 테이블입니다.

name | cat
----------
hugo | sal
bob  | mgr
mike | dev
jeff | mgr
john | dev

모두 name하고 cat있는 대 Varchar.

cat 이 이름에 대한 카테고리를 반영하지만 우선 순위를 정한 다음 우선 순위에 따라 순서대로 모든 항목을 나열하는 쿼리를 지정합니다.

어떤 방법이 가능합니까? 나는 추출 수 cat, 두 번째 테이블에 외래 키 등을 구축하지만 내 응용 프로그램은 매우 간단 주어지고 구조가 아닌 변경 될 수 있습니다 가능성 내가 나열해야 할 무엇 mgr에 의해 다음에 먼저 이름을 dev에 의해 다음, 이름을 sal이름 ?

답변:


20

구조를 변경할 수 없다고 가정하면 ORDER BY에서 CASE 문을 사용할 수 있습니다.

ORDER BY case cat when 'mgr' then 1 when 'dev' then 2 else 3

그러나 구조 변경할 있으면 Category범주 코드 및 순위를 포함 하는 테이블을 만들고 샘플 테이블을 테이블에 조인 Category하고이 순위를 기준으로 정렬 할 수 있습니다.


3
ORDER BY (case when `cat` = 'mgr' then 1 
when `cat` = 'dev' then 2 
else 3 end)

이 구조는 Wordpress에서 도움이됩니다. 예를 들어 처음 theh 다른 사용자의 게시물을 선택하는 경우 : 포스터 프로젝트는 사용자 정의 SELECT됩니다 post_typeFROM wp_postsORDER BY (대소 때 post_type= '포스터'다음 1 때 post_type= '프로젝트'다음이 다른 3 끝)


a) 괄호는 선택 사항입니다. case 표현식 (이것이라고 함)은 열을 지정할 수있는 모든 곳에서 유효합니다. 그리고 b) 표현은 다음과 같이 약간 단순화 될 수있다case `cat` when 'mgr' then 1 when 'dev' then 2 else 3 end
Colin 't Hart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.