美文网首页我爱编程
MySql(七)子查询与虚表

MySql(七)子查询与虚表

作者: 社会主义顶梁鹿 | 来源:发表于2018-08-09 15:59 被阅读30次

一、子查询

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

主查询使用子查询的结果

子查询要用括号括起来

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

子查询中不要加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的学号

相关文章

  • MySql(七)子查询与虚表

    一、子查询 子查询在主查询前执行一次 主查询使用子查询的结果 子查询要用括号括起来 将子查询放在比较运算符的右边 ...

  • MySQL

    1、mysql in和exists区别 in是先进行子查询,然后将内表(子查询)与外表(主查询)进行hash关联(...

  • mysql表关系

    mysql数据库 知识要点: 单表查询 子查询 联表查询 事务 在进行查询之前,我们要先建好关系表,并往数据表中插...

  • MySQL 学习 Part7 - MySQL子查询和连接表

    ? MySQL的子查询和连接表以及高级连接表的使用? 兼顾工作和考试实在是太累了 1.子查询语句 1.子查询 需求...

  • mysql 查询 - 个人记录

    1.mysql 子查询使用父查询字段作为条件,查询B表数量 2.mysql 根据某字段排行,获取当前用户排名

  • oracle语句

    with…as… 不同于MySQL,Oracle不能直接使用as来为子查询获得的表命名,在Oracle中要为子查询...

  • MySQL视图

    mysql视图 视图View是一个虚表,它由一个sql查询来定义,可以当做表使用。与持久表不同的是,视图中的数据没...

  • MySQL学习笔记二之单表查询与多表查询

    title: MySQL学习笔记二之单表查询与多表查询tags: MySQL 数据库categories: MyS...

  • MySQL中的回表查询与索引覆盖

    了解一下MySQL中的回表查询与索引覆盖。 回表查询 要说回表查询,先要从InnoDB的索引实现说起。InnoDB...

  • 2019-03-25 子查询建表、(round、truncate

    子查询建表 函数 函数名(参数)虚表 dual 取绝对值select abs(-19),abs(-20)from ...

网友评论

    本文标题:MySql(七)子查询与虚表

    本文链接:https://www.haomeiwen.com/subject/szxcbftx.html