2011-10-18 9 views
15

Si tengo:¿Especifica explícitamente el orden de clasificación para la consulta de mysql?

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

Si quiero para ordenar por este orden: 4, 2, 5, 3,1. ¿Hay alguna forma de hacer una consulta sql en la que especifique esto explícitamente? Algo así como:

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

¿Qué tal si introduce una columna de "posición" y ordena los artículos exactamente como desea y consulta las filas ordenadas por posición? Confiando en ordenar cosas por ID-s es simplemente ... tonto. –

Respuesta

22

En realidad, eran sorprendentemente estrecha. Es tan simple como:

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

Bueno, ¿eso es específico de MySQL? –

+1

@muistooshort Sí, es más "funk" mysql, pero todo lo que "no cumple con los estándares" es tan útil que es muy difícil de resistir. – Bohemian

4

Puede utilizar un caso en el ORDER BY como una tabla de búsqueda rudimentaria:

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; 

ejecuta este y que me haga saber acerca de sus dudas.

+6

USTED ESTÁ EN SU FORMA DE DESTRUCCIÓN. – smathy

Cuestiones relacionadas