1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

我们都知道HAVING中我们可以用Oracle子查询 ,而且两个查询的语句的结果是可做集合操作的,如果你想知道HAVING中我们是如何使用Oracle子查询的?以及两个查询的语句的结果是可做集合的实际操作是如何进行的?以下的内容就有相关的答案。

1. 查询语句可以嵌套

例如: SELECT …… FROM (SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;

2. 何处可用Oracle子查询?

当查询条件是不确定的条件时

DML(insert, update,delete)语句里也可用子查询

HAVING里也可用子查询

3. 两个查询语句的结果可以做集合操作

例如:

并集UNION(去掉重复记录)

并集UNION ALL(不去掉重复记录)

10

J2EE @ zxw

差集MINUS,

交集INTERSECT

4. 子查询的注意事项

先执行括号里面的SQL语句,一层层到外面

内部查询只执行一次

如果里层的结果集返回多个,不能用= > < >= <=等比较符要用IN.

5. Oracle子查询的例子(1)

SQL>selecttitle,avg(salary)froms_emp 
groupbytitleHavingavg(salary)= 
(selectmin(avg(salary))froms_emp 
groupbytitle);

找到最低平均工资的职位名称和工资

子查询的例子(2)

Oracle子查询可以用父查询里的表名

这条SQL语句是对的:

SQL>selectcty_namefromcitywherest_codein 
(selectst_codefromstatewherest_name='TENNESSEE'and 
city.cnt_code=state.cnt_code);

说明:父查询调用子查询只执行一次.

6.取出结果集的80 到100的SQL语句

Oracle处理每个结果集只有一个ROWNUM字段标明它的逻辑位置,

并且只能 用ROWNUM<100, 不能用ROWNUM>80。

以下是经过分析后较好的两种Oracle取得结果集80到100间的SQL语句

( ID是唯一关键字的字段名 )

语句写法:

SQL>select*from( 
(selectrownumasnumrow,c.*from( 
select[field_name,...]
fromtable_namewhere条件1orderby条件2)c) 
wherenumrow>80andnumrow<=100)

order by 条件3;

本文来源:1818IP

本文地址:https://www.1818ip.com/post/11921.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。