子查询

   日期:2017-06-15

1、把子查询作派生的表
应用子查询可以替换sql语句中的where条件语句,完成相应的功能。
把子查询用作派生的表可以应用在很多方面,如下面的几个实例
将分组统计数据作为派生表(将销售单按商品名称统计分组后,查询销售数量大于14的商品)
Select * from(select 商品名称,count(*) as s1 from xsd group by 商品名称) where (s1>14)
将过滤数据作为派生表(对商品销售表中销售数量前100名进行分组统计)
Select s1,count(*)from(select top100 from t_zdxxb order by zdbh) group by s1
将过滤数据作为派生表(统计客户表中未结账客户的欠款金额)
Select name,sum(xsje)from(select * from kh where not jz)group by name
通过子查询在学生信息表tb_stu 中派生出一个显示学生编号在前10位具有相同名字的学生个数的新表
Select 学生姓名,count(*) as 相同数量from (select top 10 学生姓名 from tb_stu order by 学生编号 asc)as t group by 学生姓名
2、用子查询作表达式
统计课程名为“计算机”的所有学生的成绩
Select distinct (select sum(成绩)from tb_stud where 课程=’计算机’) as 总成绩 from tb_stud
计算“计算机”学科中最高成绩
Select distinct(select max(成绩)from tb_stdu where 课程=’计算机’) as 最高成绩 from tb_stud
计算机数据表中数据记录的总条数
Select distinct(select count(*) from tb_stud) as 记录总数 from tb_stud
4、 在update 语句中应用子查询
子查询是一个select 查询,返回单个值且嵌套在select insert update delect 语句或其他子查询中,任何可以使用表达式的地方都可以使用子查询
当查询依赖于别一个查询时,子查询会很有用
修改员工工资表中规定工资需要通过在update 语句中利用子查询来完成
Update 员工工资表 set 基本工资=(select 基本工资 from 规定工资 where 基本工资=1000)where 员工姓名=‘李二’