赞
踩
select 列
form 表
where 子句
group by 列
having 子句
order by
注意:
1.当使用group by时select后的列不能随便写,必须是被分组的列或包含在聚合函数中
2.where子句不能以聚合函数作为搜索条件但可以为聚合函数取别名后使用 与组无关
3.having子句与组有关
oracle 分页一共三种方式
1.rownum分页(rownum oracle显示行id号,且一次查询只能用一次)
如以emp表为列,显示第6条到第10条的记录
第一步:查询所有
select * from emp
第二步:将第一步作为一个子查询e1,使用rownum 显示行id
select e1.*,rownum rn from (select * from emp) e1;
第三步:使用where子句查询前10条记录
select e1.*,rownum rn from (select * from emp) e1 where rownum<=10;
第四步:将三步作为一个子查询e2,查询第6条到第10记录
select e2.* from (select e1.*,rownum rn from (select * from emp) e1 where rownum<=10) e2 where rn>=6;
注意:不管是查询指定列,或是排序,都只需修改最里层的子查询即第一步中查询
使用rownum分页方式二
select * from (select * from emp where rownum<=第几页*当前页显示的条数) where 任意字段 not in (select 任意字段 from emp where rownum<=(第几页-1)*当前页显示的条数);
2.使用rowid分页
第一步:
select rowid rid from emp;
第二步:
select rownum rn,rid from (select rowid rid from emp)where rownum<=10;
第三步:
select rid from (select rownum rn,rid from (select rowid rid from emp)where rownum<=10) where rn>=6;
第四步:
select * from emp where rowid in(select rid from (select rownum rn,rid from (select rowid rid from emp)where rownum<=10) where rn>=6);
3.使用分析函数
select * from (select e.*,row_number() over(order by sal desc) e1 from emp e) where e1<=10 and e1>=6;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。