oracle分頁 語句
對的,你說的對,但是rowCount 不行吧,我一直用rownum,是了一下rowCount也不行,但是建議你這樣寫:
select /*+first_rows(10)*/ b.* from
(select /*+first_rows(10)*/ a.*,rownum rnum from
(select /*+first_rows(10)*/ * from student ) a where rownum<= "+currentPage*pageSize+"
)b
where rnum>= (currentPage-1)*pageSize;
這個意思就是認為的在sql中添加hint 數據庫返回指定條目的數據是最快的。
分頁語句問題
rownum是oracle的偽列,在sql語句中標記行號;但是簡單的把它認為是行號也是不正確的,因為使用rownum=1或者rownum>1或者用上between and是無效果的。
我們只能在語句中使用rownum<10這樣的語句來返回結果集,它的作用可以看作類似于mssql中的top。下面我來詳細說明語句含義:1,。
(select *,rownum from tablename order by id) as t。從名叫tablename的表中取出所有字段以及rownum,并將當前結果集取別名為t;2,。
(select t.*,rownum as myrow from(select *,rownum from tablename order by id) as t where rownum <=maxvalue)。 從結果集t中取rownum<=maxvalue的所有行,同時取出所有rownum并把它別名為myrow,這樣下次就不用操作關鍵字rownum了;3,最后的全語句就很容易明白了。
這樣我們就可以取區間在(minvalue,maxvalue]的信息了。其實用sql語句分頁很簡單,完全沒必要用純代碼來實現。
t-sql也是一種語言,在數據庫端分頁成本來得更低些。
求 分頁查詢語句
問幾個問題表格用于那里,查詢語句沒有分頁的。
一般我們顯示的分頁都是通過下面來實現的按照您的假定,比如每頁20條語句 第一頁查詢語句為:select 要查詢的字段 from 表格 where 條件 limit 0, 20第二頁的就是select 要查詢的字段 from 表格 where 條件 limit 21,20第N頁就是select 要查詢的字段 from 表格 where 條件 limit (20*(n-1)+1), 20limit m,n的意思就是 從第m個開始的n個數據如果在網頁或者程序里面都會選擇先計算出 m 并且為n復制 使用變量根據頁數(一般用Page表示)控制。
word:如何實現分頁
在指定頁插入頁碼:假如要在第3頁開始插入頁碼: 1、把光標放到第2頁末后,在工具欄中“插入/分隔符/下一頁”; 2、“視圖/頁眉和頁腳”打開“頁眉和頁腳”工具欄,此時光標在第3頁頁眉中閃動; 3、在“頁眉和頁腳”工具欄上單擊“在頁眉和頁腳間切換”按鈕,把光標切換到第3頁的頁腳; 4、在“頁眉和頁腳”工具欄上單擊“鏈接到前一個”按鈕,關閉第3頁與第2頁的頁腳之間的鏈接; 5、在“頁眉和頁腳”工具欄上單擊“設置頁碼格式/起始頁碼/1”; 6、在“頁眉和頁腳”工具欄上單擊“插入頁碼”(注:不要選成“插入頁數”),將“頁眉和頁腳”工具欄關閉,即可,已完成從第3頁開始插入頁碼的設置。
求SQL分頁的語句
2個參數Start end
start 開始 end 結束
例如第二頁從Start11條開始 結束end 21百
select * from (select rownum a,NEWS.* from NEWS where rownum<='"+end+"') b where b.a>'"+start+"'"
方法2 select * from NEWS limit a,b
a就是從第幾條開始 b就是查詢出的條數
例如 從第10條開始后的10條select * from NEWS limit 10,10
從第6條開始后的8條select * from NEWS limit 6,8
HQL語句分頁
hql語句分頁是在數據層取出數據時只取出指定的數量(1頁大小的數量)的數據,從而實現真正的分頁,減少網絡的傳輸,具體的數據層的代碼如下: /** * 使用hql 語句進行分頁查詢操作 * @param hql 需要查詢的hql語句 * @param offset 第一條記錄索引 * @param pageSize 每頁需要顯示的記錄數 * @return 當前頁的所有記錄 */ @SuppressWarnings("unchecked") public List findByPage(final String hql, final int offset, final int pageSize) { List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { List result = *Query(hql) .setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; }/** * 使用hql 語句進行分頁查詢操作 * @param hql 需要查詢的hql語句 * @param value 如果hql有一個參數需要傳入,value就是傳入的參數 * @param offset 第一條記錄索引 * @param pageSize 每頁需要顯示的記錄數 * @return 當前頁的所有記錄 */ @SuppressWarnings("unchecked") public List findByPage(final String hql , final Object value , final int offset, final int pageSize) { List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { List result = *Query(hql) .setParameter(0, value) .setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; }/** * 使用hql 語句進行分頁查詢操作 * @param hql 需要查詢的hql語句 * @param values 如果hql有多個個參數需要傳入,values就是傳入的參數數組 * @param offset 第一條記錄索引 * @param pageSize 每頁需要顯示的記錄數 * @return 當前頁的所有記錄 */ @SuppressWarnings("unchecked") public List findByPage(final String hql, final Object[] values, final int offset, final int pageSize) { List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = *Query(hql); for (int i = 0 ; i < * ; i++) { *ameter( i, values[i]); } List result = *stResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; } } 在jsp中取得的list就是分頁后的數據了,直接將它們遍歷顯示出來就可以了。
sql 分頁語句
select top 15 Employee_ID from hr_EmployeeBase as A2
where not (Exists( select null as Empty from (select top 30 Employee_ID from hr_EmployeeBase) as A1 where *ee_ID=*ee_ID))
order by Employee_ID
我程序里最終的一個例子,跟蹤Linq得到的,里面還少了一個 Order by排序
如何實現分頁,sql語句如何實現
在絕大多數的應用中,返回大量的符合條件的記錄是司空見慣的,最典型的莫過于搜索了。在搜索的應用中,用戶給出搜索條件,服務器查出符合條件的記錄。但往往搜索會返回大量的數據記錄,如果在網頁中,往往是通過分頁的方式來實現,頁面提供諸如上一頁,下一頁等等按鈕來實現分頁。
現在主要有以下幾中方式來實現分頁:
*的Find方法
2.在顯示第一頁前將所有的記錄放在collection對象中,后續的各頁都在內存中取。
3.每一頁都到數據庫作一次重復的查詢,然后將符合條件的記錄顯示出來。
4.保存前幾頁的搜索結果在內存中(經常使用到的),后續的記錄(這些數據是多數用戶都沒有耐心看的)再通過連數據庫取得。
5.其他各種cache機制。
我們可以根據實際情況來選擇適合自己的方法,我給大家介紹一個通過標準的SQL語句來得到符合條件的數據。如從第10到20條的符合條件(where語句中的)的記錄。通過這種方法取得記錄有一個必要條件,必須有一個能夠標識記錄順序的字段,如id,time等等。下面我為大家演示一個例子:
查詢t_table表中所有記錄第10到20條,按id排序。
SQL語句為:
SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE * < * ) > = 10 AND (SELECT count(*) FROM t_table t2 WHERE * < * ) < 20
又如查詢t_table表中key='123'第10到20條的記錄,按id排序。
SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE * < * AND * = '123') > = 10 AND (SELECT count(*) FROM t_table t2 WHERE * < * AND * = '123') < 20 AND * = '123'
當然條件中的id可以換為任何能表識記錄順序的字段。