当前位置:  数据库>oracle

在Oracle的子查询中使用some,any和all

    来源: 互联网  发布时间:2017-04-07

    本文导语:  用some,any和all对子查询中返回的多行结果进行处理。下面我们来简单介一下这几个关键词的含义。 Some在此表示满足其中一个的意义,是用or串起来的比较从句。 Any也表示满足其中一个的意义,也是用or串起来的比较从句,区...

用some,any和all对子查询中返回的多行结果进行处理。下面我们来简单介一下这几个关键词的含义。

  • Some在此表示满足其中一个的意义,是用or串起来的比较从句。
  • Any也表示满足其中一个的意义,也是用or串起来的比较从句,区别是any一般用在非“=”的比较关系中,这也很好理解,英文中的否定句中使用any肯定句中使用sone,这一点是一样的。
  • All则表示满足其其中所有的查询结果的含义,使用and串起来的比较从句。

推荐阅读:Oracle函数取得姓名对应的拼音

下面是一些例子
找出员工中,只要比部门号为10的员工中的任何一个员工的工资高的员工的姓名个工资。也就是说只要比部门号为10的员工中的那个工资最少的员工的工资高就满足条件。

select ename,sal
From emp
Where sal > any(select sal from emp where deptno = 10);

这里推荐用any,如果你非要用some也是没有任何问题的,结果是一样的,只是一般来讲some用在“=”的比较从句中。
select ename,sal
From emp
Where sal > some(select sal from emp where deptno = 10);


上面的用法完全OK的。
select ename,sal
From emp
Where sal = some(select sal from emp where deptno = 30) and deptno not in (select deptno from emp where deptno = 30);


上面才是some的正常用法。其含义是找到和30部门员工的任何一个人工资相同的那些员工。虽然没有找到。
最后一个关键字all的用法也很简单就是要与子查询的每一结果都要匹配。

select ename,sal
From emp
Where sal > all(select sal from emp where deptno = 20);

上面的SQL语句的意义与前面的就完全不一样了,其意义是找到比部门号为20的员工的所有员工的工资都要高的员工,也就是比那个工资最高的员工的还要高的员工总的来说some和any用法意义是一样的,仅在词法上有不同,都表示对子查询结果集中“或”的比较关系,而all则是对子查询结果集总每一个结果“与”的关系 

举几个例子来说明ALL和ANY的用法
1. SELECT * FROM TABLEA WHERE FLD > ALL(SELECT FLD FROM TABLEA)
这相当于
SELECT * FROM TABLEA WHERE FLD > (SELECT MAX(FLD) FROM TABLEA)


2. SELECT * FROM TABLEA WHERE FLD < ANY(SELECT FLD FROM TABLEA)
这相当于
SELECT * FROM TABLEA WHERE FLD < (SELECT MIN(FLD) FROM TABLEA)

3. SELECT * FROM TABLEA WHERE FLD = ANY(SELECT FLD FROM TABLEA)
这相当于
SELECT * FROM TABLEA WHERE FLD IN (SELECT FLD FROM TABLEA)


    
 
 

您可能感兴趣的文章:

  • linux下安装oracle后使用命令行启动的方法 linux启动oracle
  • Oracle9i 9.0.1的JDBC Drivers 可以给Oracle 8.0.5使用马?
  • Suse linux使用oracle问题
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • jbuilder中使用oracle的问题
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址
  • Oracle事务!使用游标提交过程
  • 在Jbuilder7下,使用DbPilot.exe连接oracle,报错!请教高手!
  • AIX 64位系统上如何使用32位OCI oracle driver
  • Oracle中SQL语句连接字符串的符号使用介绍
  • 使用X manager连接oracle数据库的步骤
  • C++使用OCCI连Oracle10g的错误
  • 使用工具 plsqldev将Excel导入Oracle数据库
  • Linux下Oracle的sqlplus使用光标上下左右方法
  • Oracle 数据 使用游标
  • oracle使用sql脚本生成csv文件案例学习
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的 iis7站长之家
  • Linux中Oracle使用相关知识集锦
  • Oracle密码文件的使用和维护第1/3页
  • Oracle 触发器的使用小结
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • Oracle查询出现异常
  • Oracle将查询的结果放入一张自定义表中并再查询数据
  • oracle+jsp 多用户查询系统讨论:
  • Oracle查询表、视图、序列等信息查询
  • 关于Oracle的查询问题
  • Oracle用什么语句查询字段?
  • Oracle 查询指定表名的columns
  • linux下通过对文件读取方式查询oracle的版本信息
  • Oracle的大数据量查询结果显示问题。(高手帮忙)
  • Oracle对两个数据表交集的查询
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 虚拟机装Oracle R12与Oracle10g
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle 数据库开发工具 Oracle SQL Developer
  • Oracle 10g和Oracle 11g网格技术介绍
  • Oracle EBS R12 支持 Oracle Database 11g
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • Oracle 数据库(oracle Database)性能调优技术详解
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • ORACLE日期相关操作
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE数据库常用字段数据类型介绍
  • Linux系统下Oracle的启动与Oracle监听的启动
  • Oracle 12c的九大最新技术特性介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • ORACLE中DBMS_RANDOM随机数生成包
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3