Oracle
 sql >> Base de données >  >> RDS >> Oracle

Conserver l'ordre de la clause 'IN'

Il n'y aura pas de classement fiable à moins que vous n'utilisiez une clause 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

Vous pouvez cependant diviser la requête en 5 requêtes réunies ensemble ...

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

Je ferais davantage confiance à la première méthode, et elle fonctionnerait probablement beaucoup mieux.