Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Manter ordem da cláusula 'IN'


Não haverá pedidos confiáveis, a menos que você use uma cláusula ORDER BY ..
SELECT SomeField,OtherField
FROM TestResult 
WHERE TestResult.SomeField IN (45,2,445,12,789)
order by case TestResult.SomeField
         when 45 then 1
         when 2  then 2
         when 445 then 3
         ...
         end

Você pode dividir a consulta em 5 consultas unidas todas juntas ...
SELECT SomeField,OtherField
FROM TestResult 
WHERE TestResult.SomeField = 4
union all
SELECT SomeField,OtherField
FROM TestResult 
WHERE TestResult.SomeField = 2
union all
...

Eu confiaria mais no método anterior e provavelmente teria um desempenho muito melhor.