sql >> Database >  >> RDS >> Oracle

De laagste waarde in een tabel vinden die groter is dan een bepaalde waarde

SELECT  *
FROM    (
        SELECT  *
        FROM    (
                SELECT  *
                FROM    mytable
                WHERE   value > 10000
                ORDER BY
                        value
                )
        UNION ALL
        SELECT  *
        FROM    (
                SELECT  *
                FROM    mytable
                ORDER BY
                        value DESC
                )
        )
WHERE   rownum = 1

Dit zal zowel efficiënt gebruik maken van een index op mytable(value) en COUNT(STOPKEY) .

Zie dit artikel in mijn blog voor prestatiedetails:



  1. Hoe vind je het verschil tussen twee tabellen?

  2. Oracle sequentie caching

  3. 12c Verouderde functies

  4. Verander de stap auto_increment velden verhogen met