Espero classificar os itens retornados na consulta a seguir pela ordem em que foram inseridos na função IN () .
ENTRADA:
SELECT id, name FROM mytable WHERE name IN ('B', 'A', 'D', 'E', 'C');
RESULTADO:
| id | name |
^--------^---------^
| 5 | B |
| 6 | B |
| 1 | D |
| 15 | E |
| 17 | E |
| 9 | C |
| 18 | C |
Alguma ideia?
FIELD(letter, 'A', 'C')
, a lista retornará primeiro as entradas com a letra B primeiro (assumindo um conjunto de registros comA | B | C
valores). Para evitar isso, inverta a lista e use DESC, ieFIELD(letter, 'C', 'A') DESC
.Outra opção aqui: http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html
Portanto, no seu caso (não testado) seria
Dependendo do que você está fazendo, eu achei um pouco peculiar, mas sempre consegui trabalhar depois de brincar um pouco com ele.
fonte
Tente algo como
fonte
Pode ser que isso possa ajudar alguém (p_CustomerId é passado em SP):
Descrição: desejo mostrar a lista de contas. Aqui estou passando um id de cliente em sp. Agora, ele listará os nomes das contas com contas vinculadas a que os clientes são mostrados no topo, seguidos por outras contas em ordem alfabética.
fonte
Você precisa de outra coluna (numérica) em sua tabela, na qual especifica a ordem de classificação. A cláusula IN não funciona dessa maneira.
fonte
Apenas use
evite a situação como
terminará com linha de resultado não ordenado: 1 e 11 alternantes
fonte