前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL子查询的基本使用方法(四)

MySQL子查询的基本使用方法(四)

作者头像
用户7569543
发布2021-10-20 16:57:28
1.4K0
发布2021-10-20 16:57:28
举报

上节课我们给大家介绍了MySQL分组查询与聚合函数的使用方法,具体可回顾MySQL分组查询与聚合函数的使用方法(三)。本节课我们将介绍where条件查询中的IN关键字子查询的使用方法。

在MySQL中,子查询我们也称为嵌套查询。并且子查询语句一般放在条件查询关键词where之后,其基本语法结构如下。

代码语言:javascript
复制
SELECT  <列名> FROM 表名
WHERE <条件查询列名>  IN (子查询语句);

假设现在我们新增了一个表phone,其中记录了部分乘客目前在用的手机品牌,如下所示。

【任务1】查找使用华为手机的乘客编号,姓名、性别以及年龄信息。需要结合使用titanic以及phone两个表的信息,通过IN子查询实现。

代码语言:javascript
复制
select PassengerId,name,sex,age from titanic
where PassengerId IN
(SELECT PassengerId from phone 
where phonebrand="HUAWEI");

查询结果如下所示

语法解析:

首先通过IN子查询从phone表中找出使用华为手机的乘客编号(SELECT PassengerId from phone where phonebrand='HUAWEI'),

然后在主查询中通过where条件查询限制乘客编号必须为子查询的乘客编号( where PassengerId in ( SELECT PassengerId from phone where phonebrand='HUAWEI'),

最后将符合查询条件的乘客编号,姓名、性别以及年龄信息展示出来(select PassengerId,name,sex,age from titanic)。

【任务2】查找使用苹果手机并且年龄大于30岁的男性乘客,展示乘客编号,姓名,性别,年龄信息。可以通过以下查询语句实现。

代码语言:javascript
复制
select PassengerId,name,sex,age from titanic
where PassengerId in
(SELECT PassengerId from phone 
where phonebrand="iPhone")
and age>30
and sex='male';

查询结果如下所示

语法解析:

首先通过IN子查询从phone表中找出使用苹果手机的乘客编号(SELECT PassengerId from phone where phonebrand='iPhone'),

并且限制主查询的乘客编号为子查询的乘客编号,同时限制年龄大于30,性别为male( where PassengerId in (SELECT PassengerId from phone where phonebrand='iPhone') and age>30 and sex='male' ),

最后将符合查询条件的乘客编号,姓名、性别以及年龄信息展示出来(select PassengerId,name,sex,age from titanic)。

【任务3】查找船舱等级为3且存活的乘客姓名以及手机品牌,可以通过以下子查询语句进行。

代码语言:javascript
复制
select name,phonebrand from phone
where PassengerId IN
(SELECT PassengerId from titanic 
where pclass=3
and survived=1);

以下是查询结果

语法解析:

首先通过IN子查询从titanic表中找出船舱等级为3且幸存的乘客编号(SELECT PassengerId from titanic where pclass=3 and survived=1 ),

并且限制主查询的乘客编号为子查询的乘客编号( where PassengerId in (SELECT PassengerId from titanic where pclass=3 and survived=1),

最后将符合查询条件的乘客姓名,手机品牌列展示出来(SELECT name,phonebrand FROM phone)。

结合以上三个案例,聪明的同学应该看出来了,能将titanic、phone两个表联系起来的关键在于主键PassengerId,如果两个表中没有PassengerId这个主键字段,我们就无法实现以上的子查询。

好了,今天的内容介绍到这里。下节课开始,我们将给大家介绍MySQL中非常常用的多表联合查询以及子查询与多表联合查询的区别,敬请期待!


想学习更多数据分析、数据挖掘干货知识,请关注公众号

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 多赞云数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档