關於SQL中的ROWNUM問題


前言

昨天改小程序的后台,看見之前寫的分頁很奇怪,startIndexendIndex兩個下標, endIndex 總是在里面層,而startIndex總是在外層,我隨后改了,直接 Where rownum > startIndex and rowmnum <=endIndex, 結果只查出來了第一頁,后面頁查不出來了。

客官可移步小站查看本文http://fanjiajia.cn/2019/07/10/SQL/flx1/

原因

Where rownum > 0 and rowmnum <=20,是可以查出前20條記錄的,但是Where rownum >1 and rowmnum <=20,就不行了,所以只要是rownum>1都不可以。

上網查一番,原來ROWNUM作為一列虛列,也叫做偽列,總是從1開始,我知道這樣說肯定覺得是廢話。
舉個例子,where rownum > 1, 結果是查不出數據,原因很簡單,rownum總是從1開始,可以這樣理解,查詢過程即為從數據庫的某一個數據區取值,第一行的rownum為1,第二行為2,但是限制條件where rownum > 1導致第一行數據不符合條件,被丟棄,此時取第二行數據,然而此時,rownum仍然從1開始,因為之前哪一行丟棄了,rownum依舊從1開始,因此,永遠取不到數據。


最后

  • 本文內容個人拙見,若有出入,歡迎指正。
  • 歡迎賞臉關注:家佳Talk

歡迎賞臉關注:家佳Talk


免責聲明!

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



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