Eu estou querendo saber se existe uma distância (possivelmente uma maneira melhor) para ordenar pela ordem dos valores em uma cláusula IN ().
O problema é que tenho duas consultas, uma que obtém todos os IDs e a segunda que recupera todas as informações. O primeiro cria a ordem dos IDs pelos quais quero que o segundo seja ordenado. Os IDs são colocados em uma cláusula IN () na ordem correta.
Então seria algo como (extremamente simplificado):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
O problema é que a segunda consulta não retorna os resultados na mesma ordem em que os IDs são colocados na cláusula IN ().
Uma solução que encontrei é colocar todos os IDs em uma tabela temporária com um campo de incremento automático, que é então associado à segunda consulta.
Existe uma opção melhor?
Nota: Como a primeira consulta é executada "pelo usuário" e a segunda é executada em um processo em segundo plano, não há como combinar a consulta 2 em 1 usando subconsultas.
Estou usando o MySQL, mas acho que pode ser útil anotar quais opções existem para outros bancos de dados também.
IN
eFIELD
parâmetros são iguais. Fazer isso em um código de programa pode ser mais rápido usando esse conhecimento adicional. Obviamente, pode ser mais sensato colocar essa carga no cliente, e não no servidor, se você tiver em mente o desempenho do servidor.