如何获得前n行

时间:2017-03-18 04:50:46

标签: sql database oracle mysqli oracle-sqldeveloper

我希望得到一些帮助。我从来没有写过任何SQL搜索查询,我不确定我是否会离开这里。这会解决下面的问题吗?谢谢你的时间。

SELECT * FROM表ORDER BY population DESC limit 3;

这是问题所在: 给定以下数据库表,编写一个SQL查询,返回动物名称和人口最多的三种动物的食物。

|id |animal    |food        |population |
|---|----------|------------|-----------| 
|35 |ocelot    |mouse       |1200000    | 
|36 |dingo     |rabbit      |16000000   | 
|41 |capybara  |grass       |400000     | 
|52 |remora    |blood       |82000000   | 
|54 |emu       |fruit       |725000     | 
|63 |gecko     |insects     |9000000    | 
|68 |earwig    |lettuce     |420000000  |

3 个答案:

答案 0 :(得分:4)

在Oracle 11g或更早版本中,您可以对子查询的有序结果使用rownum过滤器:

select *
from (
    Select *
    From Your_table
    Order by population desc
) t where rownum <= 3;

在Oracle 12c +中,您可以使用FETCH FIRST子句:

Select *
From Your_table
Order by population desc
fetch first 3 rows only;

在MySQL中,您可以使用LIMIT

Select *
From Your_table
Order by population desc
limit 3;

在SQL Server中,您可以使用TOP

Select top 3 *
From Your_table
Order by population desc;

答案 1 :(得分:1)

select
    animal,
    food 
from
    table 
order by
    population DESC
top 3

试试这个吗?

答案 2 :(得分:0)

使用TOP方法获得结果:

SELECT TOP 3 animal,food FROM table order by population DESC