Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Reihenfolge von 'IN'-Klausel beibehalten

Es gibt keine zuverlässige Sortierung, es sei denn, Sie verwenden eine ORDER BY-Klausel ..

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

Sie könnten die Abfrage jedoch in 5 Abfragen aufteilen, die alle zusammengefügt werden ...

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

Ich würde der ersteren Methode mehr vertrauen und sie würde wahrscheinlich viel besser funktionieren.