MySql(七)子查询与虚表

一、子查询

子查询在主查询前执行一次

主查询使用子查询的结果

子查询要用括号括起来

将子查询放在比较运算符的右边

子查询中不要加ORDER BY子句

对单行子查询使用单行运算符  (如:=、>、>=、<、<=、<>)

对多行子查询使用多行运算符  

>ANY 指大于最小值

<ANY指小于最大值

>ALL 指大于最大值

<ALL指小于最小值

二、虚表


#查询高于自己部门平均工资的员工名字,部门号,工资,平均工资*** 虚表

SELECT emp.ename,emp.deptno,emp.sal, AVG(emp.sal)

FROM emp,(SELECT deptno, AVG(sal) avgsal FROM emp GROUP BY deptno ) b

WHERE emp.deptno=b.deptno AND sal>b.avgsal

------------------------示例-----------------

#1.使用标准SQL嵌套子查询和连接查询两种方法查询选修课程名称为'gs'的学生学号和姓名

SELECT stuid,stuname FROM students            #子查询

WHERE stuid IN (SELECT stuid FROM grade WHERE couid = (SELECT couid FROM course WHERE couname = 'gs'))

SELECT s.stuid,s.stuname FROM students s,grade g,course c

WHERE couname = 'gs'                 #多表查询

AND c.couid = g.couid

AND g.stuid = s.stuid

#2 使用标准SQL嵌套语句查询选修课程编号为‘2’的学生姓名和所属班级

SELECT stuname,class FROM students

WHERE stuid IN (SELECT stuid FROM grade WHERE couid = 2)

#3.使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属班级  *******

SELECT stuname,class FROM students

WHERE stuid IN (SELECT stuid FROM grade GROUP BY stuid HAVING COUNT(stuid) = (SELECT COUNT(couid) FROM course))

#4.查询选修了课程的学生人数

SELECT COUNT(DISTINCT stuid) FROM grade

#5.查询选修课程超过3门的学员学号和所属班级 ****

SELECT stuid,class FROM students

WHERE stuid IN (SELECT stuid FROM  grade

GROUP BY stuid

HAVING COUNT(couid) > 3)#得到选修课程超过3的学号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,596评论 0 13
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 6,017评论 0 9
  • 之前我在幼儿园实习,我在这里遇到很多问题,其中就有一个小孩就是刚到园他家里是农村的,之前一直在老家没有上学...
    yantaixian阅读 769评论 0 0
  • 啊,我的痛苦,请千万保持安静,别再折腾 你盼望着黄昏 暮色渐渐降临 夜终于来到 一种朦胧而不可捉摸的气氛笼罩着全称...
    羊咩的内心拥有一头狼阅读 849评论 0 0
  • 一、产品调研说明 1、因二三四五公司半年的财报表现亮眼,公司管理层希望通过产品调研分析报告,从中获得商业模式上的启...
    Tinny2017阅读 1,112评论 1 1

友情链接更多精彩内容