MySQL中“子查询”的语法规则和应用场景

本文详细介绍了MySQL中子查询的使用,包括子查询的分类、单行子查询、多行子查询、查询中遇到空值的问题、相关子查询的处理,以及IN和NOT IN的使用场景,并通过丰富实例解析了各种情况下的子查询应用。

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

MySQL中子查询的应用和语法规则:
我们先引入一个例子:在薪资表中比较谁的工资比Abel高
方法一(分两步进行),参考代码如下:

SELECT salary 
FROM employees
WHERE last_name = 'Abel';

SELECT last_name,salary
FROM employees
WHERE salary > 11000;

方法二 (内连接),参考代码如下:

SELECT e2.last_name,e2.salary
FROM employee e1,employee e2
WHERE e1.last_name = 'Abel'
AND e2.`salary`> e1.`salary`;

方法三 (子查询),参考代码如下::

SELECT last_name,salary
FROM employees
WHERE salary > (
				SELECT salary 
				FROM employees
				WHERE last_name = 'Abel'
);

通过以上代码,我们可以看出,所谓子查询,其实是一种嵌套查询,上一步查询的结果作为下一步的过滤条件。

1.

子查询概述:
声明在外面的查询的结构:外查询、主查询
声明在里面的查询的结构:内查询、主查询
子查询的分类:单行子查询、多行子查询

写子查询的步骤:从外往里写,从里往外写。
我们一般建议从里往外写,这样每写一步就可以检查,不至于到最后出了问题都不知道是哪一步的问题。

--------------------------------------------(分割线)---------------------------------------------

2.

单行子查询:内查询(主查询)返回出的结果只有一个
我们通过例子来说明单行子查询
举例1:返回job_id与141号员工相同,salary比143号员工多的员工姓名、job_id和工资
参考代码如下:

SELECT last_name,job_id,salary
FROM employees
WHERE job_id = (
				SELECT job_id
				FROM employees
				WHERE employee_id = 141)
AND salary > (
				SELECT salary
				FROM employees
				WHERE employee_id = 143);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值