ORDER BY с двумя столбцами в MySQL

Я знаю, что могу заказать две колонки с

ORDER BY col1 DESC, col2 DESC 

например.

Но в моем случае это не сработает. У меня есть MySQL-Query, где я хочу отображать события следующих дней, упорядоченных по date , но также столбцом с именем highlight .

Потому что есть 3 типа событий: TOP-Premium (+++), Premium (++) и Free (+).

Теперь он заказывает так:

– <пример>

 7th May 2013 +FREE EVENT ++PREMIUM +++TOP PREMIUM +++TOP PREMIUM 

 8th May 2013 (same here as on 7th May 2013) 

– </ конец примера>

Итак, как вы можете видеть, он приказывает к следующей дате подходит, и это правильно! Но я хочу заказать TOP-Premium-Events вверху, затем Premium-Events и, по крайней мере, бесплатные события.

Конец моего текущего нерабочего запроса:

 ORDER BY e.`date` ASC, e.`highlight` ASC"); 

Я ценю любую помощь или предложения!

ENUM представляются внутренне как числа, в том порядке, в котором они были указаны в декларации. Если вы объявляете столбец как ENUM('2', '1', '0') , '2' сохраняется как 1 , '1' как 2 и '0' как 3 .

ORDER BY использует эти внутренние номера, а не метки. Если вы хотите заказать по метке, а не внутренний номер, вы должны использовать CAST() , например

 ORDER BY e.`date` ASC, CAST(e.highlight AS CHAR) ASC 

Это одна из причин, по которой, как правило, плохая идея использовать числа в качестве меток для ENUM. Документация MySQL рекомендует против нее.

Эмм,

 ORDER BY e.date ASC, e.highlight DESC 

?

ORDER BY e.date DESC, e.highlight ASC

Поменяйте два столбца – первый порядок по highlight а затем по дате. Вы получите последовательность, как:

 Top premium: 7th may Top premium: 8th may Premium: 7th may Premium: 8th may Free: 7th may ...