2016-08-15 3 views
-1

Это мой результатMYSQL заказа массив

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

Это мой запрос

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

Я хочу, чтобы массив заказываются по-другому .. Так что седан будет в последнем массив вместо первого .. Уже пробовал ORDER BY либо ASC или DESC, но не повезло

+1

ORDER BY 'COLUMN_TYPE' DESC. Использование DESC вместо ASC будет сортировать его по-другому. – Bobby

+0

Я обновил запрос: на самом деле ORDER BY не вступил в силу, установил ли его ASC или DESC –

+0

Взгляните на [** ЗАКАЗ ПО ПОЛЯ **] [http://dba.stackexchange.com/questions/ 109120/how-do-order-by-field-in-mysql-work-insideally] – mishanon

ответ

2

Вы запрашиваете список элементов в определении ENUM, и вы хотите изменить заказ? Вы не можете этого сделать, не используя ALTER TABLE, чтобы изменить свой ENUM.

Порядок элементов в ENUM связан с физическим хранением значений. «Седан» равен 1, «Люк» равен 2, «Конвертируемый» (sic) равен 3 и т. Д. Изменение порядка этих строк требует изменения значений перечисления.

Конечно, вы можете изменить порядок отображения строк в коде приложения. Но это означает разбор элементов из этого списка, разделение на запятую, удаление котировок и парсеров и т. Д.

Но выполнение аналогичного разбора текста в чистом SQL будет упражнением в расстройстве или, по крайней мере, будет огромная трата времени.

Эта неловкость в выборе предметов в определении ENUM является одной из причин MySQL's ENUM data type is evil.

Если вы хотите контролировать порядок сортировки без переопределения таблицы, вам будет лучше использовать таблицу поиска вместо ENUM.

+0

Хорошо отметили на этом –