如何选择n行

1 mysql sql database sql-server oracle

我有一个关于几家公司的数据库,包括他们的名字,份额价格,年龄变化百分比:

NAME           PRICE              % CHANGE
-------------------------------------------------
a              67                  11
b              23                  6
c              456                 5.89  
d              112                 23.98       
e              31                  17            
f              78                  3.09              
g              2678                12.56                   
h              357                 4.6                
Run Code Online (Sandbox Code Playgroud)

我想选择前5行年龄%明智,意味着哪个最大%年龄显示在顶部... n先于jst 4更多值在desc中.订购...

输出应该是

NAME           PRICE              % CHANGE
-------------------------------------------------
d              112                 23.98   
e              31                  17            
g              2678                12.56  
a              67                  11   
b              23                  6              
Run Code Online (Sandbox Code Playgroud)

OMG*_*ies 8

使用MySQL/Postgres:

  SELECT t.name,
         t.price,
         t.change
    FROM TABLE t
ORDER BY t.change DESC
   LIMIT 5
Run Code Online (Sandbox Code Playgroud)

LIMIT 条款:

使用SQL Server:

  SELECT TOP 5
         t.name,
         t.price,
         t.change
    FROM TABLE t
ORDER BY t.change DESC
Run Code Online (Sandbox Code Playgroud)

TOP支持的SQL Server 2000+至少在

甲骨文:

SELECT x.*
  FROM (SELECT t.name,
               t.price,
               t.change
          FROM TABLE t
      ORDER BY t.change DESC) x
 WHERE ROWNUM <= 5
Run Code Online (Sandbox Code Playgroud)

甲骨文的ROWNUM