복붙노트

[SQL] ORDER BY "ENUM 필드"MYSQL에서

SQL

ORDER BY "ENUM 필드"MYSQL에서

필드 'noticeBy'ENUM ( '이메일', '모바일', '모든', '자동', '아무것도') NOT NULL의 DEFAULT '자동'이있다. 인덱스를 기준으로 ENUM 필드 수행하여 알려진 순서로. 그러나 어떻게 그 값에 의해 가능하게 순서?

해결법

  1. ==============================

    1.정렬 아래에 설명 된대로 :

    정렬 아래에 설명 된대로 :

    두 번째 글 머리 기호 당, 할 수 있습니다, 따라서 종류가 문자열로 캐스팅 된 후 열에 :

    ORDER BY CAST(noticeBy AS CHAR)
    
  2. ==============================

    2.이것은 또한 작동합니다 :

    이것은 또한 작동합니다 :

    ORDER BY FIELD(noticeBy, 'all','auto','email','mobile','nothing')
    

    (난이, 당신은 정렬 값을 제공해야 달성 할 수있는 설정이 있다고 생각하지 않습니다.)

  3. ==============================

    3.당신이 원하는대로 당신은 당신의 순서를 정의 할 수 있습니다 :

    당신이 원하는대로 당신은 당신의 순서를 정의 할 수 있습니다 :

    ORDER BY CASE noticeBy
               WHEN 'email' THEN 1
               WHEN 'mobile' THEN 2
               WHEN 'all' THEN 3
               WHEN 'auto' THEN 4
               ELSE 5
             END
    

    이것은 다음과 같은 순서로 행을 반환하지 않습니다 : 이메일, 모바일, 모든, 자동차, 아무것도.

  4. ==============================

    4.내 경우에는, 나는 "ENUM"필드에 의해 열거 결과를 정렬했다 또한 반드시 값이 하강 순서대로합니다. 내 열거는 다음과 같은 값을했다 : '열기', '폐쇄 형'

    내 경우에는, 나는 "ENUM"필드에 의해 열거 결과를 정렬했다 또한 반드시 값이 하강 순서대로합니다. 내 열거는 다음과 같은 값을했다 : '열기', '폐쇄 형'

    내가 CAST (상태 AS CHAR)에 의해 ORDER를 사용 그래서 때, 결과는이 순서에 있었다 :

    Closed
    Open
    Open
    

    그러나 나는 열기 상태 표가 먼저 표시를 원하고 폐쇄 티켓. 그래서 나는 다음을 사용 :

    ORDER BY CAST (상태 AS CHAR) DESC

    이것은 나에게 내가 즉 찾고 있던 순서를 준

    Open
    Open
    Closed
    

    요약:

    그냥 열거에 CAST BY ORDER를 사용하여 도움말을 보이지 않았다. 뿐만 아니라 ASC 또는 DESC을 언급, 특정 순서로 결과를 정렬하려면 트릭을했다.

  5. from https://stackoverflow.com/questions/17603907/order-by-enum-field-in-mysql by cc-by-sa and MIT license