z子查询就是将一个查询(子查询)的结果作为另一个查询(主查询)的数据来源或判断条件的查询。常见的子查询有WHERE子查询,HAVING子查询,FROM子查询,SELECT子查询,EXISTS子查询,子查询要使用小括号();

WHERE子查询

在WHERE子句中进行使用查询

  1. SELECT *
  2. FROM EMP
  3. WHERE SAL < (SELECT AVG(SAL) FROM EMP);
  • 查询薪资比平均薪资低的员工信息

HAVING子查询

HAVING子句是对分组统计函数进行过滤的子句,也可以在HAVING子句中使用子查询

  1. SELECT JOB,AVG(SAL)
  2. FROM EMP
  3. GROUP BY JOB
  4. HAVING AVG(SAL) = (SELECT MAX(AVG(SAL)) FROM EMP GROUP BY JOB);
  • 查询平均薪资最高的职位及其平均薪资

FROM子查询

FROM子查询就是将一个查询结构(一般多行多列)作为主查询的数据源

  1. SELECT JOB,AVG(SAL)
  2. FROM (SELECT JOB,AVG(SAL) AS AVGSAL FROM EMP GROUP BY JOB)TEMP
  3. WHERE TEMP.AVGSAL>2000;
  • 查询平均薪资高于2000的职位以及该职位的平均薪资

SELECT子查询

SELECT子查询在SELECT子句中使用查询的结果(一般会和dual空表一起使用)

  1. SELECT (SELECT COUNT(*) FROM EMP WHERE JOB = 'SALESMAN')/(SELECT COUNT(*) FROM EMP)
  2. FROM DUAL;
  • 职位是SALESMAN的员工占总员工的比例

EXISIT子查询

将主查询的数据带到子查询中验证,如果成功则返回true,否则发水false。主查询接收true是就会显示这条数据,flase就不会显示。

  1. SELECT *
  2. FROM EMP E
  3. WHERE EXISIT (
  4. SELECT *
  5. FROM DEPT D
  6. WHERE E.DEPTNO = D.DEPTNO);
  • 查询有部门的员工信息

查询薪资排名的员工信息(面试)

  1. SELECT *
  2. FROM EMP
  3. WHERE SAL = (SELECT MIN(SAL)
  4. FROM (SELECT ROWNUM,SAL
  5. FROM (SELECT SAL FROM EMP GROUP BY SAL ORDER BY SAL DESC)
  6. WHERE ROWNUM<=n));
  • 查询薪资排名第n个员工的信息(包括并列排名)

思路:

1.先按薪资降序分组

2.再取前n名薪资中最低的薪资,即第n名的薪资。

3.最后在原表中找出薪资与最低薪资相同的员工信息。


以上

@Fzxey

SQL中的子查询的更多相关文章

  1. 在 SQL Server 数据库的 WHERE 语句中使用子查询

    这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Serv ...

  2. SQL Fundamentals: 子查询 || WHERE,HAVING,FROM,SELECT子句中使用子查询,WITH子句

    SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5 ...

  3. 工作中遇到的比较奇怪的一些sql(一些子查询)

    在列中进行子查询 1.在一个表中有多个员工ID,比如一个下单员工,一个修改订单的员工,可以使用在列中进行子查询,具体如下: ( SELECT staff_name FROM sp_staff_basi ...

  4. 详细讲述MySQL中的子查询操作 (来自脚本之家)

    继续做以下的前期准备工作: 新建一个测试数据库TestDB: ? 1 create database TestDB; 创建测试表table1和table2: ? 1 2 3 4 5 6 7 8 9 1 ...

  5. SQL Server 数据库子查询基本语法

    一.SQL子查询语句 1.单行子查询        select ename,deptno,sal        from emp        where deptno=(select deptno ...

  6. 在MySQL中使用子查询

    子查询作为数据源 子查询生成的结果集包含行.列数据,因而非常适合将它与表一起包含在from子句的子查询里.例: SELECT d.dept_id, d.name, e_cnt.how_many num ...

  7. SQL语句:子查询

    一,子查询定义: 子查询就是嵌套在主查询中的查询. 子查询可以嵌套在主查询中所有位置,包括SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY. 但并不是每个位置嵌套子 ...

  8. 子查询一(WHERE中的子查询)

    子查询 子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,为了让读者更加清楚子查询的概念. 子查询返回结果子查询可以返回的数据类型一共分为四种: ...

  9. 在MySQL中使用子查询和标量子查询的基本用法

    一.MySQL 子查询 子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用.MySQL 支持 SQL 标准要求的所有子查询格式和操作,也扩展了特有的几种特性.子查询没 ...

随机推荐

  1. Android开发—错误记录1:W/System.err: java.net.ConnectException: Connection refused

    W/System.err: java.net.ConnectException: Connection refused 前台访问后台时,出现访问被拒绝情况:W/System.err: java.net ...

  2. PHP学习之-文件上传

    一.PHP文件上传 HTML部分 <form action="file_big.php" method="post" enctype="mult ...

  3. 瑞芯微RK3399六核-迅为3399开发板介绍

    迅为3399开发板基于瑞芯微的RK3399处理器设计,Rockchip RK3399是瑞芯微推出的一款低功耗.高性能的应用处理器芯片,该芯片基于Big.Little架构,即具有独立的NEON协同处理器 ...

  4. UVA 10158 并查集的经典应用

    这个题目一看就是用并查集,有N个国家代表,在M行给出两两之间的关系,敌人或者朋友,(当然如果该关系跟已知关系冲突,则输出-1) 关系的几个约束条件时这样的 在朋友方面,朋友的朋友就是自己的朋友,这个就 ...

  5. mybatis 在自动生成时设置不生成Example类

    只需要在配置要生成的table表中添加几个配置属性就行了. 在generatorConfig.xml文件中修改 <!--指定数据库表--> <table tableName=&quo ...

  6. flask框架-大结局

    flask-script 用于实现类似于django中 python3 manage.py runserver ...类似的命令. 安装 pip3 install flask-script 使用: f ...

  7. Oracle之纵向数据转换横向数据

    资源二  来源  http://www.cnblogs.com/gkl0818/archive/2009/02/25/1398078.html 1.固定列数的行列转换如student subject ...

  8. 设置R更新源

    命令行设置R更新源 创建文件 R.home()/etc/Rprofile.site 设置更新源 local({r <- getOption("repos") r[" ...

  9. GO、 智能合约、cannot use transactionRecordId + strconv.Itoa(id) (type string) as type byte in append

    1.报错详情 2.在写fabric go智能合约发送的错误,像我这样的新手就是踩坑踩坑踩坑 3.下面是代码片段 4.研究了一下append用法.也看了下GO语言官网文章: var test_str [ ...

  10. C语言入门基础整理

    学习计算机技术,C语言可以说是必备的,他已经成为现在计算机行业人学习必备的,而且应用也是十分的广泛,今天就来看看拥有几年c语言工作经验的大神整理的C语言入门基础知识,没有学不会,只有不肯学. 结构化程 ...