2009-11-03 2 views
0

Я пытаюсь понять, как захватить информацию из моей базы данных в том порядке, в котором я хочу. Например, у меня есть имена ниже в моей базе данных:MYSQL союз или заказ?

Matt 
Jimmy 
Craig 
Jenny 
Sue 

Я хочу, чтобы получить их в таком порядке:

Sue 
Craig 
Jimmy 
Matt 
Jenny 

Как бы я сделать это с помощью MYSQL?

+1

Так есть ли алгоритм вы хотите использовать, или это просто случайное и база данных никогда не будет иметь никаких других имен, чем эти? – Cellfish

ответ

1

Использование:

ORDER BY CASE t.name 
      WHEN 'Sue' THEN 1 
      WHEN 'Craig' THEN 2 
      WHEN 'Jimmy' THEN 3 
      WHEN 'Matt' THEN 4 
      WHEN 'Jenny' THEN 5 
      ELSE 6 
      END 

Это используя саз присвоить произвольное значение на основе значения для заказа.

5

Конечно, вы можете сделать это следующим образом (если я понять ваши требования правильно):

order by field(t.name, 'Jenny', 'Matt', 'Jimmy', 'Craig', 'Sue') desc 

EDIT:

На самом деле, если вы хотите обработать общий случай с числом уже - неизвестные значения столбца и количество неизвестных значений, общим случаем было бы сделать известные значения появляться в начале набора результатов (в предопределенном порядке), а остальные после них. Для этого вы должны добавить предопределенные значения в обратном порядке в список аргументов функции field и сделать порядок по убыванию.

Этот способ «Сью» будет первым (field возвращает 5), «Крейг» - второй (4 возвращается) и так далее до «Дженни». Для значений, не входящих в список аргументов, field возвращает 0. Таким образом, они перейдут в конец набора результатов.

Ссылка: FIELD