1. 程式人生 > 其它 >mysql之limit用法和orcale的rownum用法

mysql之limit用法和orcale的rownum用法

mysql之limit用法

1.mysql>SELECT*FROMtableLIMIT5,10;//檢索記錄行6-15 #從6行開始檢索,檢索10行的資料

2.//為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為-1:

mysql>SELECT*FROMtableLIMIT95,-1;//檢索記錄行96-last. # 從96行開始一直到最後一行資料

3.//如果只給定一個引數,它表示返回最大的記錄行數目:

mysql>SELECT*FROMtableLIMIT5;//檢索前5個記錄行 (1到5行資料)

//換句話說,LIMITn等價於LIMIT0,n。

orcale的rownum用法

SELECT * FROM T_P_AB_PORT where rownum=1;--查詢第一行

SELECT * FROM T_P_AB_PORT where rownum=3; --其他無法查詢 等號不能單獨使用(除=1外)

SELECT * FROM T_P_AB_PORT where rownum<=3;--查詢1-3行 小於號可以使用(還可以合等於一起使用)

SELECT * FROM T_P_AB_PORT where rownum>=3;--大於號無法使用

原因:由於rownum是一個總是從1開始的偽列

解決方法:如果想找到從第二行記錄以後的記錄,可使用以下的子查詢方法

來解決。注意子查詢中的rownum必須要有別名,否則還是不會查出記錄來

SELECT * FROM (SELECT t.*,rownum no FROM T_P_AB_PORT t) where no >=3;

查區間比如 5到10條資料

1:單表查詢

SELECT * FROM (SELECT t.*,ROWNUM r FROM TABLE t WHERE ROWNUM <= pageNumber*pageSize) WHERE r >(pageNumber)*pageSize

SELECT * FROM (SELECT t.*,rownum no FROM T_P_AB_PORT t where rownum<=10) where no >=5;

雙表查詢

SELECT * FROM (SELECT ROWNUM RN,XX.* FROM (SELECT 表名.欄位名,表名.欄位名,表名.欄位名...FROM TABLE1 t1, TABLE2 t2WHERE t1.欄位=t2.欄位) XX WHERE ROWNUM<=pageSize*pageNumber) WHERE RN >(pageNumber-1)*pageSize

select *
from (select ab.*, rownum no
from (select b.*
from T_D_AC_TRADE_IVT a, T_P_AB_PORT b
where a.c_port_code = b.c_port_code) ab
where rownum <= 10)
where no >= 5

--其中