天天看點

SQLServer的分頁SQL

好忙!今天來了個新的需求:要求在 SQLServer中查詢相關資訊,由于架構本身是針對Oracle資料庫的(相關查詢、分頁機制都已經寫死)無奈隻好研究一下SQLServer的分頁機制了,其實說白了,就是比對SQL的問題,說來不怕大家笑話,小弟SQLServer的SQL不會!^_^再加上公司不能上外網,唉~~

更糟糕的是機器上沒有SQLServer的用戶端,隻能用java程式來驗證SQL的正确性。郁悶、郁悶、郁悶啊~~~

問問老大,老大說以前寫過,(我們老大有個毛病:隻要他說以前...基本上就不能指望了!因為那就意味着他不會!)

硬着頭皮,寫吧:隐約中記得有TOP之類的關鍵字!

在測試了N遍之後終于有了成效!為了便于自己以後總結,先寫在這裡:可能各位老大們都不值得一提的東西了,希望大家不要小我哦^_^

例如:每頁10條記錄,那麼首10條記錄查詢如下

SELECT TOP 10 * FROM TABLENAME WHERE 主鍵 NOT IN(SELECT TOP 0 主鍵 FROM TABLENAME ORDER BY 主鍵)ORDER BY 主鍵

寫成通用的SQL:

String pageSize = 10;//每頁顯示數

String onPage=1;//目前頁數

String sql = "SELECT TOP  " + pageSize +"  *  FROM    tablename   WHERE 主鍵 NOT IN(SELECT TOP "+(onPage-1)*pageSize +"主鍵 FROM   tablename  ORDER BY 主鍵)ORDER BY 主鍵"

當然,在應用這個SQL之前,我們還是要先擷取總的資料條數進而換算出總頁數!

好了,先寫到這裡,如有不對,看了的各位老大,幫小弟指出來!謝謝!