分页(oracle数据库)

时间:2013-04-22 17:25:32

标签: oracle request paging

我需要从我的C#代码创建对oracle数据库的请求,这将为网站上的页面选择行。我希望例如为第二页获取100到200的行。 我找到了一些实际工作的代码

SELECT * FROM
(
   SELECT a.*, rownum r__
   FROM
   (
      SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
      ORDER BY OrderDate DESC, ShippingDate DESC
   ) a
   WHERE rownum < ((pageNumber * pageSize) + 1 )
)
WHERE r__ >= (((pageNumber-1) * pageSize) + 1)

它可以工作,我可以在更改此内部包裹

时使用它
SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
ORDER BY OrderDate DESC, ShippingDate DESC

但它是如何运作的?我无法理解。我熟悉SQL请求,但是什么是

SELECT a.*, rownum r__  

什么是

 ) a
FROM包裹后

你能这么好地向我解释这个包裹吗?

1 个答案:

答案 0 :(得分:1)

选择a。*,rownum - &gt;从表/表别名a中选择所有记录以及rownumber,以便选择子集。

(SELECT * FROM ORDERS WHERE CustomerID LIKE&#39; A%&#39;       ORDER BY OrderDate DESC,ShippingDate DESC)a

创造&#39; a&#39;作为表别名,允许您将其视为外部选择表中的表。

作为一个注释,选择*被认为是不好的做法,因为对表结构的更改可能会破坏您的代码。