sql >> Databasteknik >  >> RDS >> Oracle

Hitta det lägsta värdet i en tabell som är större än ett visst värde

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

Detta kommer både effektivt att använda ett index på mytable(value) och COUNT(STOPKEY) .

Se den här artikeln i min blogg för information om prestanda:



  1. MySQL:Snabbaste sättet att räkna antal rader

  2. MySQL Ta bort dubbletter av kolumner på Left Join, 3 tabeller

  3. Undvik dubbla citattecken i SQL 2005/2008

  4. MYSQLI - WHERE IN array