嵌套查询

   日期:2017-06-15

1、 简单的嵌套查询
子查询是一个select查询,返回单个值,且嵌套在select ,insert,update,delect语句或其他查询中,任何可以使用表达式的地方都可以使用子查询
 子查询也称为内部查询或内部连接,而包含子查询的语句也称为外部查询或外部选择。许多包含子查询的sql语句都可以通过连接实现
 子查询可以把一个复杂的查询分解成一系列的逻辑步骤,这样就可以用一个简单语句解决复杂的查询问题,当查询依赖于另一个查询结果时,子查询会很有用
 通过in (或not in)引入的子查询结果是一列零值或多值,子查询返回结果之后,外部查询将会利用这些结果。
 在使用子查询时,要用括号将子查询括起来
 在sql server中子查询不能查询数据类型是text或image的字段
 子查询中还可以包含子查询,嵌套可以多达32层
例:得用嵌套查询在学生信息表和学生分数表中查询总成绩在580分以上的学生信息
Select distinct 学生姓名,学生编号,性别,出生年月,年龄,所在学院,所学专业 from tb_stu where 学生姓名 in(select 学生姓名 from tb_mark where 总分>=580)
2、 复杂嵌套查询
实现在人员表、部门表和工资数据表这3个表中查询学历是本科的部门经理的2005年10月分的工资情况 
Select * from 工资数据表 where 工资月份=10 and 人员姓名 in(select 负责人 from 部门表 where 负责人 in (select 人员姓名 from 人员表 where 学历=’本科’))order by 人员编号
3、 嵌套查询在查询统计中的应用
>all 大于最大值  
>any(some) 大于最小值
查询数学成绩至少大于“刘心”和“达成”中的一个的学生信息
Select * from cjd where 数学>any (select 数学 from cjd where 姓名 in (‘刘一’,’李二’))