oracle數據庫不支持類似mysql的limit功能,所以要限制查詢個數的時候常會用到rownum。rownum時oracle的關鍵字。
1. romnum是oracle系統給結果集的一個序列值,所以必須是有結果集纔會有rownum。rownum既可以是查詢條件也可以作爲查詢結果字段。
2.使用rownum作爲查詢條件時,只能使用符號<,<=,!=,不支持符號>,>=,between...and...(>=1,>0除外),並不是說用>,>=,between and會報sql語法錯,而是查詢結果爲空。用例子解釋:
(1)select * from cti_batch where rownum<10;oracle系統執行這條查詢語句,從緩存或數據庫中取出第一條記錄,rownum=1,符合查詢條件,放入結果集;接着取出第二個,rownum=2,符合查詢條件,也放入結果集,直到第十條記錄,rownum=10,不符合查詢條件這條記錄會捨棄,接着取下一條rownum=10,不符合,捨棄,以此類推,直到查詢到最後一行。
(2)select * from cti_batch where rownum>10:執行這條語句時,從緩存或數據庫中取第一條記錄,rownum=1,不符合條件,所以不能作爲查詢結果,捨棄,取下一條記錄,rownum=1,還不符合,以此類推,查詢結果爲空。
(3)select * from cti_batch where rownum!=10:執行這條sql語句,取出第一條記錄,rownum=1,符合查詢條件,是放入查詢結果集,接着取下一條記錄,rownum=2,符合條件,直到第十條記錄,rownum=10,不符合條件,捨棄該記錄,取下一條,rownum=10還不符合,捨棄,以此類推,直到查詢到最後。這條語句的查詢結果和(1)是一樣的。
所以,oracle系統查詢時,第一個符合條件的結果rownum=1,所以查詢條件一定是包含1或從1開始的。
3.
(1)
(2)
(3)
(4)