我需要從我的C#代碼創建請求到oracle數據庫什麼會選擇網頁頁面的行。我想爲例如獲得從100到200第二頁的行。 我發現一些代碼,什麼是真正的作品尋呼(oracle數據庫)
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
從包裝後?
你能這麼好心地向我解釋這個包裝嗎?
你也可以通過設置'optimizer_mode = FIRST_ROWS'來獲益。我還建議爲此目的查看分析函數'row_number()'。 – haki 2013-04-22 19:07:08