使用子查询来解决问题

目标:

         1、了解子查询

         2、了解子查询能解决哪些问题

         3、了解子查询类型

         4、学会使用单行子查询和多行子查询

Agenda

         一、子查询:类型、语法和原则

         二、单行子查询

                  ---子查询中的组函数

                  ---HAVING子句中的子查询中

         三、多行子查询

                  ---学会使用ALL或者ANY操作

         四、了解子查询中的NULL

 

 

 

一、子查询:类型、语法和原则

子查询语法



inner query ---> 可以使用在WHERE子句、FROM子句和HAVING子句中 


内部查询先执行,结果被主查询使用



示例:查询比“Abel”薪资高的员工




子查询原则

1、用括号将子查询括起来

2、将子查询放在右边,提高阅读性

3、学会使用子查询的单行操作符和多行操作符

 

Single-row subquery




Multiple-row subquery



单行子查询

1、返回一行

2、可以使用单行操作符



示例:





二、单行子查询

子查询中使用组函数

示例:列出公司最低薪资员工



在HAVING子句中使用子查询

1、首先执行子查询

2、子查询结果返回到主查询

示例:列出各部门最低薪资,且大于部门编号为50的部门



示例:列出不同岗位中平均薪资中的最低薪资岗位


注意不能使用单行操作符操作多行记录

示例:



示例:修改上面的错误



子查询一般会返回三个结果,一个是单行,一个是多行,另一个就是空,但是如果子查询返回的结果是NULL值的话,那么整个的查询返回的结果都是NULL

示例1



示例2





显然,当NULL参与算术运算的时候,整个式子都是NULL



三、多行子查询

1、返回多行记录

2、使用多行操作符



如果最后返回的结果是“no rows selected”,最终会是FALSE

如果最后返回的结果是“no rows selected”,最终会是TURE

 

< ANY是小于子查询到的最大值”

> ANY是大于子查询到的最小值”

= ANY是相当于IN

示例:(ANY)把薪资是小于程序员最大值的员工列出来,且不是程序员岗位的












< ALL是小于子查询到的最小值”

> ALL是大于子查询到的最大值”

示例:(ALL








四、了解子查询中的NULL

示例:列出不是经理的员工


not in”在返回的结果有NULL值的情况下,查询的结果是NULL,相当于“<> ALL

而“in”不同,“in”相当于“= ANY


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30197839/viewspace-1975602/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30197839/viewspace-1975602/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值