2016-08-15 4 views
-1

이것은 ... 이것은 내가 배열이 다른 방법을 주문하려면 내 쿼리MYSQL 주문 배열

SELECT SUBSTRING(COLUMN_TYPE,5) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='Ad_tbl' AND COLUMN_NAME='body_type' 

내 결과

+----------------------------------------------------------------------------------------------------------------------------------------------+ 
| SUBSTRING(COLUMN_TYPE,5)                              | 
+----------------------------------------------------------------------------------------------------------------------------------------------+ 
| ('Sedan','Hatch','Convertable','Van','Coupe','Light Truck','People Mover','SUV','Ute','Wagon','Cab Chassis','Sample Body','Body 4','BOdy 5') | 
+----------------------------------------------------------------------------------------------------------------------------------------------+ 

입니다 그래서 세단의 마지막에있을 것입니다 첫 번째 대신 배열. 이미 ASC 또는 DESC로 행운을 빕니다.

+1

ORDER BY'COLUMN_TYPE' DESC. ASC 대신 DESC를 사용하면 다른 방식으로 정렬됩니다. – Bobby

+0

쿼리를 업데이트했습니다. 실제로 ASC 또는 DESC로 설정했는지 여부에 관계없이 ORDER BY가 적용되지 않습니다. –

+0

[** 주문 필드 **] [http://dba.stackexchange.com/questions/]를 확인하십시오. 109120/how-does-by-order-by-in-field-in-mysql-work- 내부로] – mishanon

답변

2

ENUM 정의의 항목 목록을 쿼리하고 있는데 순서를 변경 하시겠습니까? ALTER TABLE을 사용하지 않고서는 ENUM을 변경할 수 없습니다.

ENUM의 항목 순서는 값의 물리적 저장과 관련이 있습니다. 'Sedan'은 1, 'Hatch'는 2, 'Convertable'은 3 등입니다. 이러한 문자열의 순서를 변경하려면 열거 형 값을 변경해야합니다.

물론 응용 프로그램 코드에서 문자열을 표시하는 순서를 변경할 수 있습니다. 그러나 이것은 목록에서 항목을 구문 분석하고 쉼표로 분리하고 따옴표와 괄호를 제거하는 등의 작업을 의미합니다.

순수한 SQL에서 이와 유사한 텍스트 구문 분석을 수행하면 좌절감이 생길 수 있습니다. 거대한 시간 낭비.

ENUM 정의의 항목을 가져 오는 것이 어색함은 MySQL's ENUM data type is evil입니다.

테이블을 재정의하지 않고 정렬 순서를 제어하려면 ENUM 대신 조회 테이블을 사용하는 것이 좋습니다.

+0

Ok는 이것에 언급했습니다. –