欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 数据库(29)——子查询

数据库(29)——子查询

2025/2/23 13:38:17 来源:https://blog.csdn.net/m0_74386799/article/details/139561945  浏览:    关键词:数据库(29)——子查询

概念

SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。

SELECT * FROM t1 WHERE column1 =(SELECT column1 FROM t2);

子查询外部语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个。

标量子查询

子查询返回的结果是单个值(数字,字符串,日期等)最简单的形式。

常见的操作符:= <> >= > < <=

演示

查询所有状态为“吃饭”的人员信息

我们可以将这个需求拆解为两个部分,先查询吃饭的id信息,在根据id来查询人员信息。

首先查吃饭的id

select id from status where now='吃饭';

查询结果id为1,再根据id查询人员的信息。

select * from user where status =1;

 

 然后我们可以将第一条语句替换掉第二条语句的‘1’

select * from user where status =(select id from status where now='吃饭');

两次查询的结果是一样的。

列子查询

列子查询的返回结果是一列

常见操作符: IN,NOT IN,ANY,SOME,ALL。

操作符描述
ANY子查询返回列表中,有任意一个满足即可
SOME与ANY相等
ALL子查询返回列表的所有值必须都满足

 演示

查询状态为‘吃饭和‘睡觉’的人员信息

select id from status where now='吃饭' or now ='睡觉';

查询结果为1和2,再根据id查询人员的信息。

select * from user where status in (select id from status where now='吃饭' or now ='睡觉');

 

 

行子查询

查询返回的结果是一行。

常见的操作符: =、<> ,IN ,NOT IN

演示

查询与背带裤age以及sex相同的人员信息

还是将题目拆成两部分,先查询‘背带裤’的age和sex

select age,sex from user where name='背带裤';

在查询与之相同的信息

select * from user where age=25  and sex='女';

 

随后可以写成

select * from user where(age,sex)=(select age,sex from user where name='背带裤');

结果和上述结果一致。

表子查询

查询的结果是多行多列

常用的操作符:IN

该查询方法与上一种查询方法差不多,表子查询所返回的值为一张表,所以将上面的等于号改为in即可,这里不做过多演示

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词