mysql aesc_MySQL学习笔记-2
错解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相关推荐
- linux数据库创建score表,MySQL数据库学习笔记
MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL 索引学习笔记
MySQL 索引学习笔记 索引基本概念 索引优点 B-Tree 索引 基本原理 使用场景 使用限制 哈希索引 基本原理 使用限制 自适应哈希索引 处理哈希冲突 相关面试题 高性能索引策略 独立的列 前 ...
- MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])
MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...
- MySQL语法学习笔记
MySQL语法学习笔记 学习之道,非尽心竭力者不能进也!我是小七黛,欢迎查看我的笔记,有问题欢迎交流探讨. SQL是一种结构查询语言,用于查询关系数据库的标准语言,包括若干关键字和一致的语法,便于数据 ...
- 最新、最全、最详细的 MySQL 数据库学习笔记总结(2021最新版)
数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统. DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 ...
- Mysql 高级学习笔记
Mysql 高级学习笔记 文章目录 Mysql 高级学习笔记 一.Mysql 基础 1. 聚合函数 2. having 3. sql 的执行顺序 4. 约束 5. 试图 二.Mysql 高级 1. M ...
- MySQL高级学习笔记(四)
文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...
最新文章
- 安装mysql和memcached
- 2011年度最佳10款免费的 WordPress 主题
- ps aux指令詳解
- python反余弦函数_Python代码中acos()函数有什么功能呢?
- 接口测试从零开始系列_mock技术使用
- 为sakai配置单点登录
- 第一章 WEB应用程序开发流程
- mysql5.6.24的安装与简单使用
- 驱动精灵修复服务器,驱动精灵一键修复系统组件工具
- CAD卸载不干净不能重新安装(恶心死我了)
- Android部分手机报 解析包时出现问题 原因与解决方法
- Centos7命令行连接wifi网络,手机usb共享网络
- python爬虫--王者荣耀高清壁纸下载(多线程)
- 前端table打印被截断,如何给每一页都增加表头
- Java语法理论和面经杂疑篇《七. 数据结构与集合源码》
- #同余最短路# [51nod] 遥远的旅途
- 基于LM的双目图像校准算法源码第一部分
- 【学习笔记】数理统计习题八
- 最新官方水晶报表实例 - 报表,应用程序
- 输入nvidia-smi不能查看显卡NVIDIA型号的解决办法及快速查看电脑显卡NVIDIA型号信息
热门文章
- keras从入门到放弃(十六)内置预训练网络VGG
- 成为一名优秀数据分析师的必经之路
- AAAI 2021 | 上海交大提出基于有监督解耦的信息瓶颈算法
- 项目交接文档_会计实操||会计人员交接范例
- python小波变换尺度函数_Python图像处理(17):pyWavelet
- python定义类object_Python之ClassObject用法详解
- java download oracle,Oracle Java Products Download
- 「数据库系列四」分布式数据库CAP理论与最终一致性
- 通过过滤器防止用户通过url访问不在权限内的菜单
- SpringFox 3.0.0(包含springfox-swagger2-3.0.0)——无法访问/swagger-ui.html解决方案