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

发布于 2021-10-18 08:18

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


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

SELECT  <列名> FROM 表名WHERE <条件查询列名>  IN (子查询语句);


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



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

select PassengerId,name,sex,age from titanicwhere 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岁的男性乘客,展示乘客编号,姓名,性别,年龄信息。可以通过以下查询语句实现。
select PassengerId,name,sex,age from titanicwhere PassengerId in(SELECT PassengerId from phone where phonebrand="iPhone")and age>30and 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且存活的乘客姓名以及手机品牌,可以通过以下子查询语句进行。
select name,phonebrand from phonewhere PassengerId IN(SELECT PassengerId from titanic where pclass=3and 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中非常常用的多表联合查询以及子查询与多表联合查询的区别,敬请期待!

数据挖掘与AI算法
主要分享数据分析、数据挖掘,机器学习,深度学习,自然语言处理等相关内容和干货。《Python广告数据挖掘与分析实战》相关数据及代码存放地址https://github.com/YANGYOUYUN/book_code,有需要的朋友可以自取。
60篇原创内容

本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材