mysql子查询跟关联查询
https://www.518cn.com 发布时间:2025-03-18 22:28 作者:网络
摘要:MySQL的复杂查询 复杂查询主要包括视图、子查询和关联子查询 1.视图 先介绍一下视图: 从SQL的角度来看,视图和表是相同的,两者的区别在于表中存储的是实际的数据,而视图中保
MySQL的复杂查询
复杂查询主要包括视图、子查询和关联子查询
1.视图
先介绍一下视图:
- ·从SQL的角度来看,视图和表是相同的,两者的区别在于表中存储的是实际的数据,而视图中保存的是SELEC
T语句(视图本身并不存储数据)。
- 使用视图可以轻松完成跨多表查询数据等复杂操作。
- 视图中不能包含ORDER BY和对视图的更新操作(INSERT、DELETE、UPDATE
1.1创建视图的方法
CREATE VIEW 视图名称(<视图列名1><视图列名2><视图列名3>......) AS <SELECT语句>
例如:创建一个视图
CREATE VIEW productsum(product type,cnt product) AS SELECT product type,COUNT(*) FROM product GROUP BY product type;
2.关联子查询
介绍一下关联子查询:
关联子查询会在细分的组内进行比较时使用。
关联子查询和GROUP BY子句一样,也可以对表中的数据进行切分。
关联子查询的结合条件如果未出现在子查询中就会发生错误。
例如:我们查询各种商品种类中高于该种类的平均销售单价的商品。
--发生错误的语句 SELECT product id,product name,sale price FROM product WHERE sale_price >(SELECT AVG(sale price)FRoM product GRouP BY product type);--这里会报错,因为不是唯一值
正确的方式应该是:
SELEcT product type,product name,sale price 登录后复制 FRoM product AS P1 WHERE sale price >(SELECT AVG(sale price)FRoM product As P2 WHERE P1.product type=P2.product type GROUP BY product type);
结果如下:
这里起到的关键作用就是在子查询中添加的WHERE子句条件。该条件的意思就是在同一商品种类中对各商品的销售单价和平均单价进行比较。
MySQL 关联子查询效率
一般情况下关联子查询的效率是比较低下的,实际上本例中的关联子查询例子也仅是为了演示关联子查询的原理及用法。如果可以的话,关联子查询尽量使用 JOIN 或其他查询来代替。如本例中,使用 INNER JOIN 来替换的 SQL 为:
SELECT article.* FROM article INNER JOIN user ON article.uid = user.uid
注意:此处只是为了演示用 INNER JOIN 替换关联子查询的样例,并非表名这种处理是最优处理
相关文章
- 优化GreatSQL日志文件空间占用 GreatSQL对于日志文件磁盘空间占用,做了一些优化,对于binlog、...03-18
- "数据约束条件" date: 2022-11-24T21:24:31 08:00 draft: false MySQL字段约束条件 无符号, 零填充...03-18
【GreatSQL优化器-16】INDEX_SKIP_SCAN
【GreatSQL优化器-16】INDEX_SKIP_SCAN 一、INDEX_SKIP_SCAN介绍 GreatSQL 优化器的索引跳跃扫描(Index Ski...03-18- MySQL 是一个非常流行的开源关系数据库管理系统,在各种应用场景中都得到了广泛的应用。随...03-18
- 🤖 DB-GPT 是一个开源的 AI 原生数据应用程序开发框架,具有 AWEL(代理工作流表达式语...03-18
GreatSQL 8.0.32-27 GA (2025-3-10)
GreatSQL 8.0.32-27 GA (2025-3-10) 版本信息 发布时间:2025年3月10日 版本号:8.0.32-27, Revision aa66a38591...03-18- 6. MySQL 索引的数据结构(详细说明) @目录6. MySQL 索引的数据结构(详细说明)1. 为什么使用索引2...03-18
- @Override @Transactional(rollbackFor = Exception.class) public void batchInsertDeviceData(IotMsgNotifyData iotMsgNotifyDa...03-18
- 个人Qt项目总结——数据库查询断言问题 问题: 当我使用MySQL数据库的查询操作时, 如果查询...03-18
- MySQL 是一种广泛使用的关系数据库管理系统,MySQL 8 是其最新的主要版本,结合了出色的性能和...03-18
最新评论