Espero ordenar los elementos devueltos en la siguiente consulta por el orden en que se ingresaron en la función IN () .
ENTRADA:
SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
SALIDA:
| id | name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |
¿Algunas ideas?
FIELD(letter, 'A', 'C')
, la lista primero devolverá las entradas con la letra B primero (asumiendo un conjunto de registros conA | B | C
valores). Para evitar eso, invierta la lista y use DESC, es decirFIELD(letter, 'C', 'A') DESC
.Otra opción desde aquí: http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html
Entonces, en su caso (no probado) sería
Dependiendo de lo que estés haciendo, lo encontré un poco peculiar, pero siempre lo hice funcionar después de jugar un poco con él.
fuente
Prueba algo como
fuente
Puede ser que esto pueda ayudar a alguien (p_CustomerId se pasa en SP):
Descripción: Quiero mostrar la lista de cuentas. Aquí estoy pasando una identificación de cliente en sp. Ahora enumerará los nombres de cuentas con cuentas vinculadas a las que se muestran los clientes en la parte superior, seguidas de otras cuentas en orden alfabético.
fuente
Necesita otra columna (numérica) en su tabla, en la que especifica el orden de clasificación. La cláusula IN no funciona de esta manera.
fuente
Solo usa
evitar la situación como
terminará con una fila de resultados desordenada: 1 y 11 alternativos
fuente