2011-10-18 18 views
15

Jeśli mam:Jawnie określić kolejność sortowania dla zapytania mysql?

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

Jeśli chcę, aby posortować według tej kolejności: 4, 2, 5, 3,1. Czy istnieje sposób zrobić kwerendę sql, gdzie jawnie określić to? Coś jak:

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

Co powiesz na wprowadzenie kolumny "pozycja" i zamówienie elementów dokładnie według potrzeb i zapytanie o wiersze uporządkowane według pozycji? Poleganie na zamawianiu rzeczy przez ID-s jest po prostu ... głupie. –

Odpowiedz

22

Właściwie były zaskakująco blisko. To proste:

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

Dobrze, czy to jest specyficzne dla MySQL? –

+1

@muistooshort Tak - to bardziej mysql "funk", ale wszystkie te "niezgodne z normami" rzeczy są po prostu tak poręczne, że trudno jest im się oprzeć! – Bohemian

4

Można używać przypadek w ORDER BY postaci szczątkowej tabeli przeglądowej:

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; 

uruchomieniu tego i daj mi znać o swoich wątpliwości.

+6

TY JESTEŚ W DRODZE DO ZNISZCZENIA. – smathy

Powiązane problemy