SQL中的子查询及好处-(ANY,ALL,EXISTS,IN)关键字

本文详细介绍了数据库查询中的子查询使用,包括ANY、ALL、EXISTS、IN关键字以及比较符的用法。ANY关键字只要满足一个内层查询条件就返回结果,而ALL则需满足所有条件。EXISTS关键字在子查询返回行时执行外层查询。IN关键字用于在外层查询中匹配内层查询返回的值。比较符则用于比较子查询结果。理解并正确使用这些子查询方式能更高效地进行数据检索。
摘要由CSDN通过智能技术生成

        子查询就是一个查询语句嵌套在另一个查询语句内部的查询,这样做就会很方便的基于一个表或者多个表去查询数据。子查询可以使用很多关键字比如有ANY,ALL,IN,EXISTS,以及运算符,如 >,<,<=,>=以及!=等。

        1.带ANY关键字的子查询。

         ANY关键字只要外层查询满足其中一个内层查询的条件,就会将结果返回。

# 比如下面这个条件,只要table1中的num1中大于table2中的num2中的任何一个都会返回结果。
select num1 from table1 where num1 > ANY (select num2 from table2);

        2.带ALL关键字子查询。

        ALL关键字和ANY正好相反,要满足所有条件时,才会返回结果。

# 比如下面这个条件,只要table1中的num1中大于table2中的num2中的所有结果的数才都会返回结果。
select num1 from table1 where num1 > ALL (select num2 from table2);

        虽然ALL和ANY写法大同小异,但是结果却千差万别,所以使用的时候要特别注意。

        3.带EXISTS关键字的子查询。

        EXISTS关键字后面的参数可以是任意一个子查询,首先会对子查询判断是否会返回行,只有返回行时才会执行外层查询,如果不返回任何行,则不会执行后面的语句。

# 比如说先查询class表中是否有在上海的学生,只有存在时,在查school表。
select * from school EXISTS (select name from class where address='shanghai');

        4.IN关键字子查询。

        IN关键字的内层查询会返回数据列,外层查询根据返回列的值在根据外层条件进行查询。

# 比如,此查询首先查出在school中姓名为shangsan的地址,然后再class表中查出地址在内查询中返回的结果的结果。
select name from class where address in (select address from school where name = 'zhangsan');

        5.带比较符的子查询。

        比较符就是>,<,<=,>=以及!=等,在子查询中会经常遇到。

# 此查询首先会查询地址不在shanghai的所有学生的姓名,在根据外查询条件返回不是这些姓名的所有的信息。
select id,name,age from class where name != (select name from school where address ='shangahi');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值