0
我正在使用Oracle 10g快速版。我已經把它和codeigniter聯繫起來了。如何在特定的限制內在Oracle 10g快速版中記錄記錄?
我想每頁抓取10條記錄來顯示記錄。
下面是表tbl_language: -
LANGUAGE_ID | LANGUAGE_TITLE | LANGUAGE_ADD_DATE | LANGUAGE_STATUS |
=====================================================================
1 | Hindi | 18-FEB-17 | 1 |
2 | English | 18-FEB-17 | 1 |
3 | Bangla | 18-FEB-17 | 1 |
現在,我使用下面的查詢
"SELECT * FROM
(SELECT fetch.*, rownum rnum FROM
(SELECT * FROM tbl_language
WHERE language_id > 0
ORDER BY TO_CHAR(language_add_date, 'YYYY-MM-DD HH24:MI:SS')
DESC)
fetch)"
它給了我在以下方式中的數據: -
LANGUAGE_ID | LANGUAGE_TITLE | LANGUAGE_ADD_DATE | LANGUAGE_STATUS | RNUM
===============================================================================
3 | Bangla | 18-FEB-17 | 1 | 1
2 | English | 18-FEB-17 | 1 | 2
1 | Hindi | 18-FEB-17 | 1 | 3
現在,我正在修改查詢兩個選擇特定行數(類似於使用限制) -
"SELECT * FROM
(SELECT fetch.*, rownum rnum FROM
(SELECT * FROM tbl_language WHERE language_id > 0 ORDER BY TO_CHAR(language_add_date, 'YYYY-MM-DD HH24:MI:SS') DESC)
fetch WHERE rownum >= 1 AND rownum < 2) "
它返回一行。 然後我修改了查詢
"SELECT * FROM
(SELECT fetch.*, rownum rnum FROM
(SELECT * FROM tbl_language WHERE language_id > 0 ORDER BY TO_CHAR(language_add_date, 'YYYY-MM-DD HH24:MI:SS') DESC)
fetch WHERE rownum >= 2 AND rownum < 3) "
它返回空結果。我究竟做錯了什麼?
對不起,我只是假設我的答案適用於所有使用SQL的應用程序。我將刪除該答案。請看看這個SO帖子:http://stackoverflow.com/questions/2912144/alternatives-to-limit-and-offset-for-paging-in-oracle – ultrajohn
[在Oracle中用於分頁的LIMIT和OFFSET的替代方案的可能重複](http://stackoverflow.com/questions/2912144/alternatives-to-limit-and-offset-for-paging-in-oracle) – ultrajohn
你在做什麼錯是'where rownum> = 2'。行一次生成一個。第一行被分配了'rownum = 1',但是然後它失敗了'where'條件,因此被丟棄。 'rownum = 1'被**重新分配給每一個連續的行,並且每一行都失敗'where'子句。這就是爲什麼你在最後一個查詢中得到一個空的結果。爲了保存它(儘管它可能不會做你所需要的),在子查詢中生成'rownum'並給它一個別名如'rnum',然後在外部查詢中選擇'rnum'並且根據'rnum',而不是'rownum'。 – mathguy