mysql之limit用法和orcale的rownum用法

mysql之limit用法

1.mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15   #从6行开始检索,检索10行的数据

2.//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:    

mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.   # 从96行开始一直到最后一行数据

3.//如果只给定一个参数,它表示返回最大的记录行数目:    

mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行   (1到5行数据)

//换句话说,LIMIT n 等价于 LIMIT 0,n。

 

orcale的rownum用法

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

mysql之limit用法和orcale的rownum用法

 

 

SELECT * FROM T_P_AB_PORT where rownum=3;  --其他无法查询 等号不能单独使用(除=1外)

 

mysql之limit用法和orcale的rownum用法

 

 

SELECT * FROM T_P_AB_PORT where rownum<=3;--查询1-3行  小于号可以使用(还可以合等于一起使用)

 

mysql之limit用法和orcale的rownum用法

 

 SELECT * FROM T_P_AB_PORT where rownum>=3;--大于号无法使用

原因:由于rownum是一个总是从1开始的伪列

 

 

 mysql之limit用法和orcale的rownum用法

 

解决方法:如果想找到从第二行记录以后的记录,可使用以下的子查询方法来解决。注意子查询中的rownum必须要有别名,否则还是不会查出记录来

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

mysql之limit用法和orcale的rownum用法

 

查区间比如  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;

mysql之limit用法和orcale的rownum用法

 

 

双表查询

 SELECT * FROM (SELECT ROWNUM RN,XX.* FROM (SELECT 表名.字段名, 表名.字段名, 表名.字段名... FROM TABLE1  t1, TABLE2   t2 WHERE 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

--其中

mysql之limit用法和orcale的rownum用法

 

 

 mysql之limit用法和orcale的rownum用法

 

mysql之limit用法和orcale的rownum用法

上一篇:SQL SERVER 查找一列的非重复数据


下一篇:MySQL 那些常见的错误设计规范