热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

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

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

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

  • Some在此表示满足其中一个的意义,是用or串起来的比较从句。
  • Any

    推荐阅读: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的员工的所有员工的工资都要高的员工,,也就是比那个工资最高的员工的还要高的员工总的来说someany用法意义是一样的,仅在词法上有不同,都表示对子查询结果集中的比较关系,而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 这相当于
    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

  • 推荐阅读
    author-avatar
    小情冒_256
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有