MYSQL-子查询

本文详细介绍了MySQL中子查询的使用,特别是IN和EXISTS运算符。子查询允许我们在WHERE子句中过滤多个值或者测试内部查询是否返回任何行。IN子查询用于查询特定字段值在另一查询结果中的记录,而EXISTS子查询则用于验证主查询数据是否符合内嵌查询的条件。文中通过实例展示了如何查询选修了课程和未选修课程的学生信息。
摘要由CSDN通过智能技术生成

MYSQL-子查询

一、子查询 in

​ 运算符 IN,它允许我们在 WHERE 子句中过滤某个字段的多个值。

​ #where子句使用in语法

​ SELECT column_name FROM table_name WHERE column_name IN(value1, value2, …)

如果运算符 in 后面的值是来源于某个查询结果,并非是指定的几个值,这时就需要用到子查询。子 查询又称为内部查询或嵌套查询,即在 SQL 查询的 WHERE 子句中嵌入查询语句。

​ #子查询in语法

​ SELECT column_name FROM table_name WHERE column_name IN( SELECT column_name FROM table_name [WHERE] );

二、子查询exists

​ EXISTS是子查询中用于测试内部查询是否返回任何行的布尔运算符。

​ 将主查询的数据放到子查询中 做条件验证,根据验证结果(TRUE 或 FALSE)来决定主查询的数据结果是否保留。

​ #where子句使用exists语法

​ SELECT column_name1 FROM table_name1 WHERE EXISTS (SELECT * FROM table_name2 WHERE condition);

三、实例

IN:

查询选修了课程的学生信息
SELECT A.*
FROM student A
WHERE A.stu_no in (
SELECT B.stu_no FROM score B
);

在这里插入图片描述

查询选修了离散数学的学生信息
SELECT A.*
FROM student A
WHERE A.stu_no IN (
SELECT B.stu_no FROM score B WHERE B.course=‘离散数学’
)

在这里插入图片描述

EXISTS:

查询选修了课程的学生信息

​ SELECT A.* FROM student A WHERE EXISTS (select B.stu_no FROM score B WHERE B.STU_NO=A.stu_no);

在这里插入图片描述

查询未选修课程的学生信息

​ SELECT A.* FROM student A WHERE not EXISTS (select B.stu_no FROM score B WHERE B.STU_NO=A.stu_no);

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值