MySQL-----子查询

本文详细介绍了数据库查询中的子查询概念及其应用,包括子查询在SELECT、FROM、WHERE/HAVING及EXISTS后的不同用法。子查询分为标量子查询、列子查询、行子查询和表子查询,每种类型都有其特定的功能和操作符。例如,标量子查询常用于单行比较,而列子查询则配合多行操作符如IN、ANY/SOME、ALL进行比较。此外,子查询可以作为临时表在FROM后面使用,并在EXISTS后进行相关查询。虽然EXISTS查询可以被其他方式替代,但其在特定场景下仍有其价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

子查询

出现在其他语句中的select语句,成为子查询或内查询
外部出现的查询语句,称为主查询或外查询

分类
按子查询出现的位置:
select后:(仅仅支持标量子查询)
from后面(支持表子查询)
where或者having后(支持标量子查询列子查询、行子查询)
exists后(相关子查询)(支持表子查询)
按功能不同(结果集的行列数不同):
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
行子查询(结果集有多行多列)
表子查询(结果集多行多列)

一、where或having后面
1、标量子查询(单行子查询)
2、列子查询(多行子查询)
3、行子查询(多行多列)

特点
1、子查询放在小括号内
2、子查询一般放在条件右侧
3、表量子查询一般搭配单行操作符<>>= <= <>
列子 查询一般搭配多行操作符使用:in,any/some,all
4、子查询优先于主查询

1、标量子查询
查询结果是一行一列在这里插入图片描述

2、列子查询
用多行子查询(或者列子查询)需要搭配多行比较操作符使用
常见的多行比较操作符:
IN/NOT IN 等于列表中的任意一个 ※重要
ANY/SOME 和子查询返回的某一个值比较
ALL 和子查询返回的所有值比较

3、行子查询

二、放 select后
一般可以被其它代替,弱化
一般select仅仅支持表量子查询

三、from后面
将子查询结果充当一张表,要求必须起别名

四、放在exists后面(相关子查询)
Boolean类型,只能查询有没有(结果0/1)
语法:
exists(完整的查询语句)
结果:
0或1

能用exists查询的一般都可以被其他替代,所以不常用
能用exists的一定可以用in
在这里插入图片描述
在这里插入图片描述
结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值