ANY子查询和ALL子查询

ANY子查询和ALL子查询

查询出Emp表中比任意一个销售员(SALESMAN)工资低的员工姓名、工作、工资。

 

    销售员在Emp表中有很多条记录,每个人工资不相等,如果返回“比任意员工的工资还低”的条件,返回比“最高工资还低”即可。如果用子查询做,子查询中就会返回多条记录。用普通的关系符(>、<等)运行就会出错。这时候需要用关键字ANY。ANY放在比较运算符后面,表示“任意”的意思

SQL> SELECT ENAME,JOB,SAL FROM EMP

  2  WHERE SAL<ANY (SELECT SAL FROM EMP WHERE JOB='SALESMAN')  ①

  3  /

ENAME

JOB

SAL

SMITH

CLERK

800

JAMES

CLERK

950

ADAMS

CLERK

1100

WARD

SALESMAN

1250

MARTIN

SALESMAN

1250

MILLER

CLERK

1300

TURNER

SALESMAN

1500

                                    7 rows selected

代码解析:

①     <any:比子查询结果中任意的值都小,也就是说,比子查询结果中最大值还小,那么同理>any表示比子查询结果中最小值还大。

 

 

===================================================================================================================

查询出比所有销售员的工资都高的员工姓名,工作,工资。

ANY可以表示任意的,但本案例中要求比所有销售员工资都高,那么就要使用另外一个关键字ALL。ALL与关系操作符一起使用,表示与子查询中所有元素比较。

SQL> SELECT ENAME,JOB,SAL FROM EMP

  2  WHERE SAL>ALL (SELECT SAL FROM EMP WHERE JOB='SALESMAN')  ①

  3  /

 

 ENAME

JOB

SAL

JONES

MANAGER

2975

BLAKE

MANAGER

2850

CLARK

MANAGER

2450

SCOTT

ANALYST

3000

KING

PRESIDENT

5000

FORD

ANALYST

3000

                                                 6 rows selected

代码解析:①     >ALL:比子查询结果中所有值还要大,也就是说,比子查询结果中最大值还要大。<ALL表示比最小值还要小。

对于子查询还可以使用IN和NOT IN操作符进行操作。

 

总结:【ANY】

    “比任意一个销售员工资低”==“比最高销售员工资低”;

   “比任意一个销售员工资高”==“比最低销售员工资高”;

   【ALL】

  “比所有销售员工资都低”==“比最低销售员工资低”;

  “比所有销售员工资都高”==“比最高销售员工资高”;

 

转载于:https://www.cnblogs.com/snowphil/p/5977819.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值