相关疑难解决方法(0)

Oracle和分页

在MySql中,使用LIMIT类似下面的子句可以使用单个SQL语句轻松实现分页的概念.

SELECT country_id, country_name 
FROM country c 
ORDER BY country_id DESC 
LIMIT 4, 5;
Run Code Online (Sandbox Code Playgroud)

它将从SQL查询检索的结果集中检索从开头5到的行10.


在Oracle中,使用带有子查询的行号可以实现同样的目的,使得任务有点繁琐,如下所示.

SELECT country_id, country_name
FROM
  (SELECT rownum as row_num, country_id, country_name
   FROM
    (SELECT country_id, country_name
     FROM country
     ORDER BY country_id desc)
  WHERE rownum <= 10
  )
WHERE row_num >=5;
Run Code Online (Sandbox Code Playgroud)

在Oracle 10g(或更高版本中,我不确定更高版本),这可以做得有些简单,例如,

SELECT country_id, country_name
  FROM (SELECT country_id, country_name, row_number() over (order by country_id desc) rank
      FROM country)
 WHERE rank BETWEEN 6 AND 10;
Run Code Online (Sandbox Code Playgroud)

关于像Web应用程序这样的应用程序,需要分页的概念几乎无处不在,并且每次执行(select)查询时编写这样的SQL语句有时是一项繁琐的工作.

假设我有一个使用Java的Web应用程序.如果我使用Hibernate框架,那么有一种直接的方法可以使用Hibernate支持的一些方法,比如

List<Country>countryList=session.createQuery("from Country …
Run Code Online (Sandbox Code Playgroud)

oracle pagination hibernate oracle10g top-n

5
推荐指数
1
解决办法
2300
查看次数

标签 统计

hibernate ×1

oracle ×1

oracle10g ×1

pagination ×1

top-n ×1