博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于SOME、ANY和ALL的区别
阅读量:6588 次
发布时间:2019-06-24

本文共 1456 字,大约阅读时间需要 4 分钟。

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

  • Some在此表示满足其中一个的意义,是用or串起来的比较从句。
  • Any也表示满足其中一个的意义,也是用or串起来的比较从句,区别是any一般用在非“=”的比较关系中,这也很好理解,英文中的否定句中使用any肯定句中使用sone,这一点是一样的。
  • All则表示满足其其中所有的查询结果的含义,使用and串起来的比较从句。
  • 下面是一些例子
  • 找出员工中,只要比部门号为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)

     

转载于:https://www.cnblogs.com/zxw0004/p/4915773.html

你可能感兴趣的文章
2013年省赛总结
查看>>
C++多态性(续)
查看>>
迷你MVVM框架 avalonjs 0.71发布
查看>>
用C++设计一个不能被继承的类
查看>>
cocos2dx游戏开发必备工具之PhysicsEditor【ZT】
查看>>
vim配置之目录结构
查看>>
【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用...
查看>>
mysql-connector-java-5.1.22下载
查看>>
vim中设置tab的长度的方法
查看>>
林权抵押贷款政策出台 将实现林业资源变资本
查看>>
Spring REST
查看>>
在.Net中执行js
查看>>
切换sprite
查看>>
cocos2d-x 在vs2010下的环境配置
查看>>
Entity Framework 5.0系列之Code First数据库迁移
查看>>
EnterpriseDb公司的Postgres Enterprise Manager 安装图解
查看>>
ajax传输 基础一
查看>>
Android Animation学习(四) ApiDemos解析:多属性动画
查看>>
【转载】spring mvc 使用session
查看>>
SQLSERVER到底能识别多少个逻辑CPU?
查看>>