Mysql查询操作 联合查询 子查询

2024-06-16 23:20

本文主要是介绍Mysql查询操作 联合查询 子查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MySQL联合查询是指在一条SQL语句中使用UNION关键字将多个查询结果合并返回的操作。UNION查询能够将多条SELECT语句的结果合并成一个结果集,每个查询结果集的列数和列类型必须一致。

语法格式如下:

SELECT 列1, 列2, 列3 FROM 表1 WHERE 条件1
UNION
SELECT 列1, 列2, 列3 FROM 表2 WHERE 条件2

联合查询将返回两个或多个查询的结果集,并且会自动去除重复的记录。

UNION ALL关键字与UNION的作用类似,但不会自动去重,会返回所有的记录。

MySQL子查询是指在一个查询内部嵌套了另一个完整的查询语句。子查询可以嵌套在SELECT、FROM、WHERE等子句中,用于获取一组数据用于父查询的条件或结果集。

       子查询是从内到外执行的,即先执行子查询,将其结果作为外层查询的一部分。子查询可以返回单个值、一行或多行数据,具体取决于子查询的语句和位置。

子查询的语法格式如下:

SELECT 列1, 列2, 列3 FROM 表1 WHERE 列A IN (SELECT 列A FROM 表2 WHERE 条件)

  子查询`(SELECT 列A FROM 表2 WHERE 条件)`嵌套在了主查询中的WHERE子句内部,并且主查询的条件使用了子查询的结果。子查询可以用于各种场景,例如作为过滤条件、计算字段、连接其他表等。使用子查询可以使查询语句更加灵活和复杂,能够处理更多的业务需求。

需要注意的是,子查询的性能可能不如联合查询或使用临时表,因此在使用子查询时要注意性能优化的问题。

MySQL的子查询可以分为以下几种类型:

1. 标量子查询(Scalar Subquery):返回的结果集只有一行一列,通常用于作为父查询的条件或计算字段的取值。例如,获取某个表的最大值或最小值作为查询条件。子查询位于主查询的条件部分,并用括号括起来。子查询返回的结果集只能是一行一列,且通常用于比较运算符(如=、>, <等)的右侧。

SELECT column_name
FROM table_name
WHERE column_name = (SELECT column_name FROM table_name WHERE condition);select * from emp where dept_id=(select id from dept where name='销售部');
SELECT 列1, 列2, ...
FROM 表1
WHERE 列N 表达式 (SELECT 列M FROM 表2 WHERE 表达式);/*
首先查询 某某 的入职时间
查询指定入职日期之后的入职的员工的信息
*/select entrydate from emp where name='姓名';select * from emp where entrydate > '2006-12-05';select * from empwhere entrydate > (select entrydate from emp where name='姓名');

2. 列子查询(Row Subquery):返回的结果集有多行一列,通常用于作为父查询的条件使用IN、ANY、SOME等条件运算符。例如,查找在一个表的某个字段中存在于另一个表的某个字段中的所有行。

/*查询比某一个部所有人工资都搞的员工信息*/
/*查询所有财务部人员运功工资*/
select id from dept where name = '具体的部门';select  salary from emp where dept_id=查询出来的部门ID;select  salary from emp where dept_id=(select id from dept where name = '具体的部门');/*比某一个部所有员工工资都高的员工信息  all都需要满足*/select * from emp
where salary > all (select  salary from emp where dept_id=(select id from dept where name = '具体的部门'));

3. 行子查询(Column Subquery):返回的结果集有一行多列,通常用于查询某个表中的某个字段在另一个表中的多个字段的值。

/*
行子查询
1.查询与某某员工的薪资及直属领导相同的员工信息
*/
/*a  查询张无忌员工的薪资及其直属领导*/select salary,managerid from emp where name ='某员工';/*b  查询与某某员工  的薪资及其直属领导相同的员工信息*/
select * from emp
where (salary,managerid)=(62500,1);
/*
内部子查询返回的一行多列  和前面的salary,managerid 匹配
*/
select * from emp
where (salary,managerid)=(select salary,managerid from emp where name ='某员工');

4. 表子查询(Table Subquery):返回的结果集有多行多列,通常用于作为父查询的表来源,可以通过JOIN操作与其他表进行关联查询。

/*表子查询*/
/*查询与  某某员工1     某某员工2职位工资相同的员工*/
/*首先查询   某某员工1    某某员工2的职位和薪资*/
select job,salary from emp where name=' 某某员工1'or name=' 某某员工2';/*查询与 某某员工1   某某员工2  的职位和薪资相同的员工信息*/select * from emp where (job,salary)in (select job,salary from emp where name='某某员工1'or name=' 某某员工2');

这篇关于Mysql查询操作 联合查询 子查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067839

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach