数据库中TOP—N查询

1)查询1-4的数据

SELECT rownum, sno, cno, score
  FROM (SELECT * FROM sc order by score desc)
WHERE rownum < 4

2)查询2-5行的数据

SELECT rn, sno, cno, score
  FROM (SELECT rownum rn, sno, cno, score
    FROM (SELECT * FROM sc order by score desc))
WHERE rn > 2
and rn < 5

说明:1.rownum “伪列” ,数据表中本身就不存在这样的列,是数据库为每个数据自然加上去的,默认是主索引排序,所以需要我们用一个嵌套把它拿出来;

   2.对rownum只能使用<或者<=,=,>,>=无法返回,需要我们再嵌套一层循环来把rownum(rn别名很有必要)给单独拿出来再去过滤。

原文地址:https://www.cnblogs.com/zjx012/p/11876505.html