注册 登录
MySQL基础教程

第一章: 环境搭建,安装MySQL

第二章: 掌握数据库的核心概念

第三章: MySQL服务与Show命令

第四章: 创建数据库与数据表

第五章: MySQL增查改删

第六章: 在Python中操作MySQL

首页 > MySQL基础教程 > 第五章: MySQL增查改删 > 5.8节: SELECT子查询

5.8节: SELECT子查询

薯条老师 2021-12-03 17:59:36 156382 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师的线下Python,Java小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Java后端开发。授课详情请点击:http://chipscoco.com/?cate=6

5.8.1 SELECT子查询

所谓子查询,是指在查询中嵌套select语句进行数据查询,子查询通常出现在from语句或where语句中。当SQL中出现子查询时,MySQL会优先返回子查询中的结果。

MySQL会对子查询的结果创建一个临时表,查询完毕以后再进行释放。在使用子查询时,需要使用as关键字为临时表设置一个别名。

由于会创建和释放临时表,所以子查询在一定程度上会影响数据库性能,在数据量较大的情况下,并不推荐使用子查询。读者需注意,MySQL中的子查询需要使用()符号括起来

5.8.2 SELEC子查询实例

(1) 先查询表中的所有记录

mysql> select id, name, price from goods;
+----+--------------+-------+
| id | name         | price |
+----+--------------+-------+
|  1 | 黑人牙膏     |    25 |
|  2 | 云南白药     |    28 |
|  3 | 青岛啤酒     |     7 |
|  5 | 湖南辣条     |    38 |
|  6 | 云南白药     |    19 |
|  7 | 云南白药     |    19 |
|  8 | 云南白药     |    23 |
|  9 | 青岛啤酒     |    21 |
+----+--------------+-------+
8 rows in set (0.00 sec)

(2) 在商品表中根据name列和price列进行分组,并通过子查询查询每组中的最小id

mysql> select id from (select min(id) as id from goods group by name, price) as T;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
|    5 |
|    6 |
|    8 |
|    9 |
+------+
7 rows in set (0.00 sec)

(3) 基于(2), 查询不在(1)中的所有id

mysql> select id from goods where id not in (select id from (select min(id) as id from goods group by name, price) as T);
+----+
| id |
+----+
|  7 |
+----+
1 row in set (0.00 sec)

(4) 删除表中的重复记录

在商品表中,id为6和7的记录的(name, price)均相同,通过(3)中的子查询就可以将重复记录的id值筛选出来。筛选出来重复记录的id以后,就可以利用DELETE动词将重复值删除。关于DELETE动词的用法会在5.9节中进行讲解。

5.8.3 高薪就业班

(1) Python后端工程师高薪就业班,月薪10K-15K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪10K-20K, 免费领取课程大纲
(4) Python大数据工程师就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取学习资料:



欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录