2011-10-18 2 views
15

Если у меня есть:Явным образом укажите порядок сортировки для запроса mysql?

ID | Title 
1 | Shirt 
2 | CD 
3 | Cap 
4 | Mp3 
5 | Badge 

Если я хочу, чтобы сортировать на этом порядке: 4, 2, 5, 3,1. Есть ли способ сделать запрос sql, где вы явно указываете это? Что-то вроде:

select * from TABLE order by ID(4,2,5,3,1) ?? 
+0

Как насчет того, чтобы ввести столбец «позиция» и заказать элементы именно так, как вы хотите, и запросить строки, упорядоченные по положению? Опираясь на упорядочение вещей с помощью ID-ов, просто ... немой. –

ответ

22

На самом деле, вы были на удивление близко. Это просто, как:

select * from TABLE order by field(ID,4,2,5,3,1) 
+1

Ницца, это зависит от MySQL? –

+1

@muistooshort Да - это больше mysql «funk», но все, что «нестандартно-совместимые» вещи просто так удобны, слишком сложно сопротивляться! – Bohemian

4

Вы можете использовать случай в ORDER BY в зачаточной таблице поиска:

select * 
from your_table 
order by 
    case id 
     when 4 then 1 
     when 2 then 2 
     when 5 then 3 
     when 3 then 4 
     when 1 then 5 
    end 
2
select * from TABLE order by ID=1,ID=3,ID=5,ID=2,ID=4; 

запустить этот и дайте мне знать о ваших СОМНЕНИЯ.

+6

ВЫ НАХОДИТЕСЬ С ВАШИМ ПУТЕМ К УНИЧТОЖЕНИЮ. – smathy

Смежные вопросы