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');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【归并排序】| 详解归并排序核心代码之合并两个有序数组 力扣88

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️专栏&#xff1a;动态规划 &#x1f397;️如何活着&#xff0c;是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: https://leetcode.cn/problems/merge-sorted-array/description/ 本道题是归并排序的…

超拟人大模型:AI心理健康服务的未来

摘要&#xff1a; 周末听了一场聆心智能关于情感LLM的分享&#xff0c;总结了相关内容如下。在人工智能技术的浪潮中&#xff0c;超拟人大模型技术为心理健康服务领域带来了革命性的变化。本文将分析超拟人大模型的进展、CharacterGLM模型的特点、Emohaa模型的应用以及心理健康…

AI 挑战周杰伦?Suno 全新功能面世,即兴哼几句就能创作成歌,还能模仿声音!...

作者 | 王启隆 出品丨AI 科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09; 2016 年&#xff0c;周杰伦根据女儿 Hathaway 在玩具钢琴上随意弹出的几个音符&#xff0c;激发出创作的灵感&#xff0c;谱写了一首温馨而深情的歌曲——《前世情人》。8 年过去&#xff0…

【每日随笔】摩托车控车 ① ( 油离配合 | 落脚油离配合 - 不给油 | 落脚油离配合 - 给油 | 正式油离配合 | 骑行姿态注意事项 )

文章目录 一、找 " 离合结合点 "二、落脚油离配合 ( 不给油 )1、该科目练习目的2、起步姿态3、开始练习 三、落脚油离配合 ( 给油 )1、练习目的2、熟悉油门转速3、练习步骤 四、正式油离配合1、练习目的2、练习步骤3、练习效果 五、骑行姿态注意事项1、基本骑行姿态2…

【Python高级编程】Matplotlib 绘图中文显示问题与常见错误合集

在 Matplotlib 中使用中文标题时出现错误可能是由于字体问题。Matplotlib 默认使用英文字体&#xff0c;不支持中文。要解决此问题&#xff0c;需要安装中文字体并将其设置为 Matplotlib 的默认字体。 安装中文字体 可以使用以下命令安装中文字体&#xff1a; sudo apt-get …

Cisco Packet Tracer实验(四)

生成树协议&#xff08;Spanning Tree Protocol&#xff09; 交换机在目的地址未知或接收到广播帧时是要进行广播的。如果交换机之间存在回路/环路&#xff0c;那么就会产生广播循环风暴&#xff0c;从而严重影响网络性能。 而交换机中运行的STP协议能避免交换机之间发生广播…

解决Qt的multimedia库在clion中依赖库补全的问题

解决Qt的multimedia库在clion中使用报错的问题 在clion中&#xff0c;使用Qt的multimedia库时会报如下错误&#xff1a; defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer" 我猜测出现这个错误的原因很可能是因为…

迅狐短视频矩阵管理系统核心功能

一、多平台管理&#xff1a;连接多个主流自媒体平台&#xff0c;满足多平台、多账号、多角色的协调需求 在现如今的多元化媒体环境中&#xff0c;一个优秀的内容创作者需要同时管理多个自媒体平台&#xff0c;并以不同的身份角色展现自己。迅狐短视频矩阵管理系统强大的多平台…

数据结构重要知识总结

数组 数组&#xff08;Array&#xff09; 是一种很常见的数据结构。它由相同类型的元素&#xff08;element&#xff09;组成&#xff0c;并且是使用一块连续的内存来存储。 我们直接可以利用元素的索引&#xff08;index&#xff09;可以计算出该元素对应的存储地址。 数组…

软设之系统设计之人机界面设计

人机界面设计原则: 1.置于用户控制之下 2.减少用户的记忆负担 3.保持界面的一致性 置于用户控制之下: 以不强迫用户进入不必要的或不希望的动作模式来定义交互方式 提供灵活的交互 允许用户交互可以被中断和撤销 当技能级别增加时可以使交互流水化并允许定制交互 使用…

如何充分利用 Postgres 的内存设置

为了充分利用 PostgreSQL 的内存设置&#xff0c;你需要调整多个参数以优化数据库性能。这些参数包括共享缓冲区&#xff08;shared_buffers&#xff09;、工作内存&#xff08;work_mem&#xff09;、维护工作内存&#xff08;maintenance_work_mem&#xff09;、有效缓存大小…

仅凭一图,即刻定位,AI图像定位技术

AI图像定位技术&#xff0c;解锁空间密码&#xff01;仅凭一图&#xff0c;即刻定位&#xff0c;精准至经纬度坐标&#xff0c;让世界无处不晓。 试试看能否猜中这张自拍照的背景所在&#xff1f;可别低估了A的眼力&#xff0c;答案说不定会让你大吃一惊呢。 近期&#xff0c;…

mysql主从备份

1&#xff0c;备份主库数据 2&#xff0c;配置主库 修改my.cnf文件&#xff0c;在[mysqld]加入下面的内容&#xff1a; # 服务的唯一编号 server-id1 # 开启mysql binlog功能 log-bin mysql-bin # 这个参数要加上&#xff0c;否则不会给更新的记录些到二进制文件里 lo…

第九站:Java黑——安全编码的坚固防线

在Java开发中&#xff0c;确保应用程序安全是一项至关重要的任务。以下是几个关于如何在Java中实施安全编码实践的例子&#xff0c;特别关注OWASP Top 10安全威胁中的几个关键点&#xff1a;加密解密、SQL注入防护。 1. 加密解密示例&#xff1a;使用Java Cryptography Archit…

现代CMake

文章目录 现代CMake-D选项&#xff1a;指定配置变量-G生成选项添加cpp源文件项目配置变量设置构建方式各种构建模式在编译器上的区别 project其他相关变量project初始化&#xff1a;LANGUAGES 字段project初始化&#xff1a;VERSION字段project 内的其他字段 设置C标准常见误区…

JWT令牌、过滤器Filter、拦截器Interceptor

目录 JWT令牌 简介 JWT生成 解析JWT 登陆后下发令牌 过滤器(Filter) Filter快速入门 Filter拦截路径 过滤器链 登录校验Filter-流程 拦截器(Interceptor) Interceptor 快速入门 拦截路径 登录校验流程 JWT令牌 简介 全称:JSON Web Token(https://iwt.io/) …

Oracle复习部分记录

GuassDB,Oracle,Postgresql 适用的hint说明 一、在使用with as 短语时&#xff0c;使用materialize 会生产临时表&#xff0c;执行完成后&#xff0c;PGA会将其清除。 materialize 二、pq_distribute 表示在并行过程中&#xff0c;按照并行对标划分多少个分区&#xff0c;a分…

0118__C语言——float.h文件

C语言——float.h文件_c float.h-CSDN博客

React 中的事件处理

React 中是如何处理事件的&#xff0c;现在下面简单的一段代码&#xff1a; export default function App() {const AList lazy(()>import(./List.js))const r useRef(null) const [show, setShow] useState(false);return (<><button onFocus{()>{setShow…