错解1: 子查询所构建的表不识别,失效

SELECTd.*, davg.a

FROM

departments AS d

RIGHT JOIN ( SELECT department_id, avg( salary ) a FROM employees WHERE department_id IS NOT NULL GROUP BY department_id ) AS davg ON davg.department_id = d.department_id

WHERE

davg.a = ( SELECT MIN( davg.a ) FROM davg );

现象:在上述写法中,除去where 语句,运行正常。添加后显示:

Table 'my_employees.davg' doesn't exist。

① 通过将where 子查询语句直接更改为‘TRUE’,发现虽然结果为空,但并没有报错。说明错误之处一定是where子查询语句,即where子查询中的davg不能识别

② 猜想:子查询中所调用的只能是当前系统已显式create并存储的当前数据库中的"全局表",各个子查询之间是独立的,所以在right join 语句中所建的表davg不能在where 子查询语句中被识别。

正解2: 可以使用 order by + limit 的结合语句来实现查询效果

SELECT d.*, davg.a

FROM

departments AS d

RIGHT JOIN ( SELECT department_id, avg( salary ) a FROM employees WHERE department_id IS NOT NULL GROUP BY department_id ) AS davg ON davg.department_id = d.department_id #内连接更简?

ORDER BY

davg.a ASC

LIMIT 1;# 可修改行数确定是否最低值只有一个。

该策略同样适用于: 其他有关 '最低,最高 '类字眼的查询 (在此不考虑效率问题)

正解3:复杂嵌套1

SELECT d.*

FROM departments d

WHERE department_id = ( #此处 '=' 换用 'in' 更好

SELECT davg.department_id

FROM ( SELECT department_id, avg(salary) a

FROM employees

GROUP BY department_id

) AS davg

WHERE a = ( SELECT MIN(该部平均工资)

FROM (SELECT avg(salary) AS 该部平均工资

FROM employees

GROUP BY department_id

) AS davg

# 'AS davg' 必须有,语法要求。尽管前面select min(arg)不加davg也OK

)

)

# 两个子查询字段中的别名‘davg’互不影响,当然若写成不一样更易理解。

此类嵌套查询解题思路:

①明确各个层次,清晰定义。② 从最内层,最小解题单元开始,逐步完善。③ 耐心,耐心。

疑问:对于mysql中重复出现的语句有没有类似命名定义方法。

正解4:复杂嵌套2

SELECT d.*

FROM departments d

WHERE department_id = ( #此处 '=' 换用 'in' 更好

SELECT department_id

FROM employees e

GROUP BY department_id

HAVING AVG(salary) = (

SELECT MIN( a )

FROM ( SELECT AVG(salary) a

FROM employees

GROUP BY department_id

) AS davg

)

)

该解不同与正解3的地方在于Having 子句的使用替代了where子查询嵌套,需要理解的是:

要真正理解group by 子句的所带来的效果/意义,以及各子句之间的执行顺序:

① group by 子句的使用必然与' 需使用聚合类函数的需求'有关(想不出没有使用聚合类函数的需求仍然使用group by 子句的),但: 并不意味着聚合类函数一定[显式]出现在select 语句的字段中,它也可以出现在 having ,where 等子句中(执行顺序在它之后的就OK)

② 执行顺序:from 子句,join ta_name on cond类 子句 , group by 子句 , having 子句 , where 子句,select 子句 ,order by 子句,limit 子句。

解5 存储过程?

mysql aesc_MySQL学习笔记-2相关推荐

  1. linux数据库创建score表,MySQL数据库学习笔记

    MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...

  2. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. MySQL 索引学习笔记

    MySQL 索引学习笔记 索引基本概念 索引优点 B-Tree 索引 基本原理 使用场景 使用限制 哈希索引 基本原理 使用限制 自适应哈希索引 处理哈希冲突 相关面试题 高性能索引策略 独立的列 前 ...

  5. MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])

    MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...

  6. MySQL语法学习笔记

    MySQL语法学习笔记 学习之道,非尽心竭力者不能进也!我是小七黛,欢迎查看我的笔记,有问题欢迎交流探讨. SQL是一种结构查询语言,用于查询关系数据库的标准语言,包括若干关键字和一致的语法,便于数据 ...

  7. 最新、最全、最详细的 MySQL 数据库学习笔记总结(2021最新版)

    数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统. DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 ...

  8. Mysql 高级学习笔记

    Mysql 高级学习笔记 文章目录 Mysql 高级学习笔记 一.Mysql 基础 1. 聚合函数 2. having 3. sql 的执行顺序 4. 约束 5. 试图 二.Mysql 高级 1. M ...

  9. MySQL高级学习笔记(四)

    文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...

最新文章

  1. 安装mysql和memcached
  2. 2011年度最佳10款免费的 WordPress 主题
  3. ps aux指令詳解
  4. python反余弦函数_Python代码中acos()函数有什么功能呢?
  5. 接口测试从零开始系列_mock技术使用
  6. 为sakai配置单点登录
  7. 第一章 WEB应用程序开发流程
  8. mysql5.6.24的安装与简单使用
  9. 驱动精灵修复服务器,驱动精灵一键修复系统组件工具
  10. CAD卸载不干净不能重新安装(恶心死我了)
  11. Android部分手机报 解析包时出现问题 原因与解决方法
  12. Centos7命令行连接wifi网络,手机usb共享网络
  13. python爬虫--王者荣耀高清壁纸下载(多线程)
  14. 前端table打印被截断,如何给每一页都增加表头
  15. Java语法理论和面经杂疑篇《七. 数据结构与集合源码》
  16. #同余最短路# [51nod] 遥远的旅途
  17. 基于LM的双目图像校准算法源码第一部分
  18. 【学习笔记】数理统计习题八
  19. 最新官方水晶报表实例 - 报表,应用程序
  20. 输入nvidia-smi不能查看显卡NVIDIA型号的解决办法及快速查看电脑显卡NVIDIA型号信息

热门文章

  1. keras从入门到放弃(十六)内置预训练网络VGG
  2. 成为一名优秀数据分析师的必经之路
  3. AAAI 2021 | 上海交大提出基于有监督解耦的信息瓶颈算法
  4. 项目交接文档_会计实操||会计人员交接范例
  5. python小波变换尺度函数_Python图像处理(17):pyWavelet
  6. python定义类object_Python之ClassObject用法详解
  7. java download oracle,Oracle Java Products Download
  8. 「数据库系列四」分布式数据库CAP理论与最终一致性
  9. 通过过滤器防止用户通过url访问不在权限内的菜单
  10. SpringFox 3.0.0(包含springfox-swagger2-3.0.0)——无法访问/swagger-ui.html解决方案