Oracle
 sql >> Database >  >> RDS >> Oracle

Mantieni l'ordine dalla clausola "IN".

Non ci saranno ordini affidabili a meno che tu non utilizzi una clausola 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

Potresti dividere la query in 5 query unite tutte insieme però ...

SELECT SomeField,OtherField
FROM TestResult 
WHERE TestResult.SomeField = 4
union all
SELECT SomeField,OtherField
FROM TestResult 
WHERE TestResult.SomeField = 2
union all
...

Mi fiderei maggiormente del primo metodo e probabilmente funzionerebbe molto meglio.