【JAVA】關於mysql的limit關鍵字使用。


在WEB項目中我們經常會使用到分頁,分頁有很多中,一種是放在內存中,由java代碼控制分頁;另一種是直接用sql進行數據庫分頁;

放在內存中進行分頁這肯定是不太現實的,如果數據量過大,會導致內存爆掉。所以我們還是選擇利用數據庫查詢分頁。

現在java常用的ORM映射框架就那么幾個,hibernate,ibatis(改成mybatis了)等。。

hibernate可以調用Session的setFirstResult(int ...)、setMaxResult(int ...)或用hibernateTemplate等完成分頁。當然你要寫sql也可以。

ibatis我不是很了解,但是我知道他和hibernate的一點差別,那就是需要自己優化sql。。

----------------------------------------------------------------------------------------------------------以上廢話

這里我們看看mysql用limit是如何分頁的:

  首先來看我表結構:

  

  再看我的查詢語句:

1 SELECT * from d_user LIMIT 1,2

  接着看查詢結果:

  

看到上面的結果你可能會很疑惑,為什么是從id=2開始,我之前也很疑惑,我明明是讓他從第一行開始。經過查閱資料,發現limit默認的初始行是從0行開始。

也就是說如果我們要獲取到id=1的那一行那我們的sql語句就應該這樣寫:

SELECT * from d_user LIMIT 0,2

  結果:

  

看到這里相信我們已經明白了。使用limit關鍵字時有兩個參數,如:limit arg1,arg2;

其中:arg1表示從哪一行開始,初始行為0;

   arg2表示顯示多少行,如:limit 0,2;limit 1,2;這兩種方式都是顯示兩條數據,只不過一條是從第0行開始,一條是從第1條開始。

 

----------------------------------------------------------------------------------------------------------------------------------------------------------

補充:當arg1=0時,可以不用寫arg1,直接寫:limit arg2就可以了。

注意:arg2貌似不能為負數,使用navicat for mysql執行時會報錯:

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2.-1' at line 1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM