[SQL] ORDER BY "ENUM 필드"MYSQL에서
SQLORDER BY "ENUM 필드"MYSQL에서
필드 'noticeBy'ENUM ( '이메일', '모바일', '모든', '자동', '아무것도') NOT NULL의 DEFAULT '자동'이있다. 인덱스를 기준으로 ENUM 필드 수행하여 알려진 순서로. 그러나 어떻게 그 값에 의해 가능하게 순서?
해결법
-
==============================
1.정렬 아래에 설명 된대로 :
정렬 아래에 설명 된대로 :
두 번째 글 머리 기호 당, 할 수 있습니다, 따라서 종류가 문자열로 캐스팅 된 후 열에 :
ORDER BY CAST(noticeBy AS CHAR)
-
==============================
2.이것은 또한 작동합니다 :
이것은 또한 작동합니다 :
ORDER BY FIELD(noticeBy, 'all','auto','email','mobile','nothing')
(난이, 당신은 정렬 값을 제공해야 달성 할 수있는 설정이 있다고 생각하지 않습니다.)
-
==============================
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.내 경우에는, 나는 "ENUM"필드에 의해 열거 결과를 정렬했다 또한 반드시 값이 하강 순서대로합니다. 내 열거는 다음과 같은 값을했다 : '열기', '폐쇄 형'
내 경우에는, 나는 "ENUM"필드에 의해 열거 결과를 정렬했다 또한 반드시 값이 하강 순서대로합니다. 내 열거는 다음과 같은 값을했다 : '열기', '폐쇄 형'
내가 CAST (상태 AS CHAR)에 의해 ORDER를 사용 그래서 때, 결과는이 순서에 있었다 :
Closed Open Open
그러나 나는 열기 상태 표가 먼저 표시를 원하고 폐쇄 티켓. 그래서 나는 다음을 사용 :
ORDER BY CAST (상태 AS CHAR) DESC
이것은 나에게 내가 즉 찾고 있던 순서를 준
Open Open Closed
요약:
그냥 열거에 CAST BY ORDER를 사용하여 도움말을 보이지 않았다. 뿐만 아니라 ASC 또는 DESC을 언급, 특정 순서로 결과를 정렬하려면 트릭을했다.
from https://stackoverflow.com/questions/17603907/order-by-enum-field-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 자바에서 타임 스탬프의 시간 부분을 재설정 (0) | 2020.06.26 |
---|---|
[SQL] 이미 데이터가있는 MySQL 데이터베이스 필드에 데이터를 추가 (0) | 2020.06.26 |
[SQL] 행 번호는 SQL 쿼리의 결과 집합에 추가 (0) | 2020.06.26 |
[SQL] 어떻게 SQL SELECT 문에서 패키지 상수를 사용 하는가? (0) | 2020.06.26 |
[SQL] 매개 변수가 모두 선택 null의 경우 SQL 쿼리 (0) | 2020.06.26 |