解决Mysql多行子查询的使用及空值问题

 更新时间:2022年01月22日 10:11:12   作者:不入开发不工作  
所谓多行子查询,是指执行查询语句获得的结果集中返回了多行数据的子查询,今天通过本文给大家分享Mysql多行子查询的使用及空值问题,感兴趣的朋友一起看看吧

1 定义

  • 也称为集合比较子查询
  • 内查询返回多行
  • 使用多行比较操作符

2 多行比较操作符

-- 多行子查询

-- IN
SELECT
	employee_id,
	manager_id,
	department_id 
FROM
	employees 
WHERE
	manager_id IN ( -- 在返回集合中查找有没有相同的manager_id在里面
	SELECT
		manager_id 
	FROM
		employees 
	WHERE
	employee_id IN ( 141, 147 ));
	
-- ANY
#题目:返回其它job_id中比job_id为'IT_PROG'部门任一工资低的员工的员工号、姓名、job_id 以及salary
	last_name,
	job_id,
	salary 
	job_id != 'IT_PROG' 
	AND salary < ANY ( -- 比任意一个小都可以
	SELECT salary FROM employees WHERE job_id = 'IT_PROG' );
-- ALL
#题目:返回其它job_id中比job_id为'IT_PROG'部门所有工资低的员工的员工号、姓名、job_id 以及salary
	AND salary < ALL ( -- 比所有的都小才可以

3 空值问题

3.1 问题

	-- 空值问题
SELECT
	last_name 
FROM
	employees 
WHERE
	employee_id NOT IN (
	SELECT -- 子查询中的结果有NULL
		manager_id 
	employees)

子查询的结果:

查询结果:

3.2 解决

去掉子查询中的NULL即可

	-- 空值问题解决
SELECT
	last_name 
FROM
	employees 
WHERE
	employee_id NOT IN (
	SELECT
		manager_id 
	FROM
		employees 
	manager_id IS NOT NULL)

子查询去掉NULL:

查询结果:

到此这篇关于Mysql多行子查询的使用及空值问题的解决的文章就介绍到这了,更多相关Mysql多行子查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • MySQL实战记录之如何快速定位慢SQL

    MySQL实战记录之如何快速定位慢SQL

    这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL语句,下面这篇文章主要给大家介绍了关于MySQL实战记录之如何快速定位慢SQL的相关资料,需要的朋友可以参考下
    2022-03-03
  • MySQL启动报错:Can not connect to MySQL server的解决方法

    MySQL启动报错:Can not connect to MySQL 

    今天打开数据库出现一个错误,ERROR 2003: Can't connect to MySQL server on 'localhost' 的错误,网上查找原因说是我的mysql服务没有打开,所以本文给大家介绍了MySQL启动报错:Can not connect to MySQL server的解决方法,需要的朋友可以参考下
    2024-03-03
  • mysql innodb的重要组件汇总

    mysql innodb的重要组件汇总

    这篇文章主要介绍了mysql innodb的重要组件的相关资料,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-12-12
  • 浅谈MySQL如何优雅的做大表删除

    浅谈MySQL如何优雅的做大表删除

    这篇文章主要介绍了浅谈MySQL如何优雅的做大表删除,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • MySQL字段自增自减的SQL语句示例介绍

    MySQL字段自增自减的SQL语句示例介绍

    MySQL的自增语句大家应该都很熟悉,本文为大家介绍下MySQL字段自增自减的SQL语句,需要的朋友可以参考下
    2014-02-02
  • MySQL删除表操作实现(delete、truncate、drop的区别)

    MySQL删除表操作实现(delete、truncate、drop的区别)

    这篇文章主要介绍了MySQL删除表操作实现(delete、truncate、drop的区别),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • MySQL varchar(n)能存储几个汉字

    MySQL varchar(n)能存储几个汉字

    这篇文章主要介绍了MySQL varchar(n)能存储几个汉字,MySQL中varchar(n)表示n个字符,无论汉字和英文,Mysql都能存入n个字符,仅是实际字节长度有所区别,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Mysql中Insert into xxx on duplicate key update问题

    Mysql中Insert into xxx on duplicate key update问题

    在看代码的过程中碰到了这一用法,不太理解,google了一下。它的意义其实是如果在insert语句末尾制定了on duplicate key update语句的话,则当插入行会导致一个unique索引或者primary key中出现重复值,则执行update中的语句,否则才插入新行
    2012-08-08
  • MySQL的 DDL和DML和DQL的基本语法详解

    MySQL的 DDL和DML和DQL的基本语法详解

    SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,这篇文章主要介绍了MySQL的 DDL和DML和DQL的基本语法,需要的朋友可以参考下
    2022-07-07
  • MySQL中的IF语句使用小结

    MySQL中的IF语句使用小结

    在MySQL数据库中,IF 语句是一种常见的条件控制语句,本文介绍了 MySQL 中 IF 语句的基本用法以及实际应用场景,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10

最新评论