ЗАМОВИТИ ЗА допомогою користувацьких пріоритетів для текстових стовпців


12

Це зразок таблиці:

name | cat
----------
hugo | sal
bob  | mgr
mike | dev
jeff | mgr
john | dev

І те, nameі catВаршар.

cat відображає категорію для цих імен, але мені подобається призначити пріоритет, після чого слід запит про їх перелік, упорядкований за цим пріоритетом.

Які шляхи можливі? Я міг би витягнути catдругу таблицю, створити зовнішній ключ і т. Д. Але, зважаючи на те, що моя програма дуже проста, і структура може бути незмінною: які можливості я маю, щоб спочатку перелічити mgrімена, а потім devімена, а потім salімена ?

Відповіді:


20

Якщо припустити, що ви не можете змінити свою структуру, ви можете використовувати оператор CASE у своєму ЗАМОВЛЕННІ:

ORDER BY case cat when 'mgr' then 1 when 'dev' then 2 else 3

Якщо ви можете змінити свою структуру, проте, ви можете створити Categoryтаблицю, що включає код категорії та рейтинг, приєднайте свою зразкову таблицю до Categoryтаблиці та сортуйте за цим рейтингом.


3
ORDER BY (case when `cat` = 'mgr' then 1 
when `cat` = 'dev' then 2 
else 3 end)

Ця структура допомагає мені в Wordpress. Наприклад, для вибору спочатку спеціальних публікацій - інше: плакат і проект - власний ВИБІР post_typeВІД wp_postsЗАМОВЛЕННЯ (випадок, коли post_type= 'плакат', то 1, коли post_type= 'проект', то 2 інше 3 кінець)


Зауважте, що а) дужки необов’язкові: case вираз (як це називається) є дійсним скрізь, де можна вказати стовпець; і б) вираз можна трохи спростити доcase `cat` when 'mgr' then 1 when 'dev' then 2 else 3 end
Colin 't Hart
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.