sql >> Database >  >> RDS >> Oracle

Bestelling van 'IN'-clausule behouden

Er is geen betrouwbare bestelling tenzij u een ORDER BY-clausule gebruikt..

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

Je zou de zoekopdracht echter kunnen splitsen in 5 query's die allemaal samen zouden zijn ...

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

Ik zou meer op de vorige methode vertrouwen, en het zou waarschijnlijk veel beter presteren.



  1. MySQL-dump per zoekopdracht

  2. Welke situaties zorgen ervoor dat Oracle-pakketten ongeldig worden?

  3. hoe saldi in een boekhoudsoftware te berekenen met behulp van de postgres-vensterfunctie

  4. Microsoft SQL Server – Doe mee met SQL Saturday Dallas