oracle子查询
2016-07-20 11:56
483 查看
子查询:
查询子查询
查询子查询就是将查询出来的结果当成一张表来查询。1:Select *From (
selectdeptid,usersex,count(1) from T_userinfo
groupby deptid,usersex
) t
wheret.deptid not in (5,6)
2:oracle的分页语句。
Select*
From (Select rownum rn, t.*
From (Select * From T_userinfo order byuserid asc) t
where rownum <= 10) temp
where temp.rn > 0;
Select*
From (Select rownum rn, t.*
From (Select * From T_userinfo order byuserid asc) t
where rownum <= 20) temp
where temp.rn > 10;
分析:
Select* From T_userinfo order by userid asc
先将查询出来的所有数据当成一张表t
Selectrownum rn, t.*
From (Select * From T_userinfo order byuserid asc) t
where rownum <= 20
然后再加上伪列,查询出前20条数据,再将其当做一张表temp
Select *
From (Select rownum rn, t.*
From (Select * From T_userinfo order byuserid asc) t
where rownum <= 20) temp
where temp.rn > 10;
最后再查询出最后的结果,即第10行到第20行
那么为什么不直接用伪列查询出第10行到第20行呢?
原来伪列只能从1开始,即只能小于不能大于。如果直接查询第10行到 第20行的话伪列是0到10的。是查询不出来的。oracle数据库就会报错。
更新/删除子查询
--重复的数据1:Select*
From T_Userinfo
where username in
(Select username
from (Select username, password, truename,usersex, count(1)
From T_Userinfo
group by username, password, truename, usersex
havingcount(1) > 1
order by count(1) desc) t)
orderby username asc,userid asc
先根据重复条件查找数量大于一的数据(重复数据)
然后查找这些数据的用户名
最后根据用户名查找整条数据
--重复的数据2:
Select*
From T_userinfo a
inner join T_userinfo b
on a.username = b.username
and a.password = b.password
and a.truename = b.truename
and a.usersex = b.usersex
and a.userid != b.userid
order by a.username asc, a.userid asc
内连接
--删除重复的数据,留一条。
DeleteFrom T_userinfo a
wherea.userid != (
Select min(userid) From T_userinfo b
where a.username = b.username
and a.password = b.password
and a.truename = b.truename
and a.usersex = b.usersex
)
相关文章推荐
- oracle的文件结构
- oracle聚合与分组
- 把EXCEL用程序导入到ORACLE中(SpringMVC+MyBatis)
- Oracle学习记录整理笔记1-数据备份
- oracle 批量更新四种方法比较
- oracle中sequence浅析
- RedHat Enterprise 7.2(RHEL7)安装Oracle 12.X报compat-libstdc++包的解决办法
- CentOS6.5安装oracle11g release2记录
- 链接oracle数据库 生成表对应的javabean
- DROP TABLE 恢复oracle中误删除drop掉的表
- oracle安装
- oracle 11g 命令行方式下载
- Oracle 11g R2 GI and DB Installation on AIX 6.1L
- oracle修改字符集
- oraclede chuangjian yu dajian(zhuan)
- Oracle安装错误ora-00922(zhuan)
- 今天早上刚刚碰到的一个问题oracle数据归档已满,只能进行内部连接,ORA-00257 archiver error. 错误的处理方法
- Oracle 中count(1) 和count(*) 的区别
- 二、oracle pctfree和pctused详解
- Oracle下查找存储过程和包的语句