mysql数据库教程子查询_MySQL数据库中如何进行子查询

子查询是将一个查询语句嵌套在另一个查询语句中,内层查询语句的查询结果,可以作为外层查询语句提供查询条件。子查询中可能包括IN、NOT IN、ANY、ALL、EXISTS和NOT EXISTS等关键字,还包括比较运算符,如“=”、“!=”等,那如何进行子查询,具体操作如下:

3535f92e1782b49731ea1ab105470512.png

1.首先,在一个查询中的查询结果作为外层查询的条件,可以用IN关键字,代码如下:SELECT * FROM city WHERE CountryCode IN (SELECT Code FROM country);

如下图所示:

8a309dc4c3b87bbf1b96836e211c6fae.png

2.其次,外层查询的条件不在内层查询结果,可以用NOT IN关键字,代码如下:SELECT * FROM city WHERE CountryCode NOT IN (SELECT Code FROM country);

如下图所示:

379be9d750b6dca889c69f888715e14f.png

3.使用EXISTS关键字查询时,内层查询语句不返回查询的记录,而是返回一个Boolean值;当内层查询返回的值为true时,外层查询语句将进行查询,如果返回false时,将不进行查询或查询结果为空,代码如下:SELECT * FROM city WHERE EXISTS (SELECT Name FROM country);

如下图所示:

3dd68fbc03874c67d60e02437e72e002.png

4.由第三步可知,与EXISTS相对的是NOT EXISTS,当内层查询返回的值为false时,外层查询语句将进行查询,如果返回true时,将不进行查询或查询结果为空,代码如下:SELECT * FROM city WHERE NOT EXISTS (SELECT Name FROM country);

如下图所示:

78275d2c151dd15464d2b82d46823a07.png

5.满足其中的任一条件,就可以通过该条件来执行外层查询语句,用关键字ANY,代码如下:SELECT * FROM city WHERE Population >= ANY (SELECT Population FROM country);

如下图所示:

bd859eb592b8b3f8c0ba2edc71af0a15.png

6.子查询还包含比较运算符,有“>="、“<="、"!="等关键字,代码如下:SELECT * FROM city WHERE Population >= (SELECT Population FROM country WHERE Name = 'Afghanistan');

SELECT * FROM city WHERE Population <= (SELECT Population FROM country WHERE Name = 'Afghanistan');

SELECT * FROM city WHERE Population != (SELECT Population FROM country WHERE Name = 'Afghanistan');

如下图所示:

100dbb19fc5fb1fe519dbc4639aa7b4a.png

f9e4e54b5b6aec42af9eb4286aa7ff47.png

a218c725d65d715fc67d92e231b6dfc3.png

7.满足所有条件,只有满足内层查询语句返回所有结果,代码如下:SELECT * FROM city WHERE Population >= ALL (SELECT Population FROM country WHERE Name = 'Afghanistan');

如下图所示:

b785fbf26ff1b884c85a3d59666c7c23.png

注意事项

注意子查询的用法

注意子查询中各个关键字的区别

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值