当前位置: 首页 > news >正文

07、MySQL-多表查询

目录

1、内连接

1.1 隐式内连接

1.2 显式内连接

2、外连接

2.1 左外连接

2.2 右外连接

3、自连接

4、联合查询

5、子查询

5.1 标量子查询

5.2 列子查询

5.3 行子查询

5.4 表子查询


1、内连接

概念:相当于查询A、B表交集的部分数据

1.1 隐式内连接

语法:SELECT 字段列表 FROM 表1,表2 WHERE 条件

-- 例:查询每一个员工的姓名 及关联的部门的名称(隐式内连接的实现)
SELECT emp.name,dept.name from emp,dept WHERE emp.dept_id = dept.id

1.2 显式内连接

语法:SELECT 字段列表 FORM 表1 [INNER] JOIN 表2 ON 连接条件

-- 例:查询每一个员工的姓名 及关联的部门的名称(显式内连接的实现)
SELECT emp.name,dept.name from emp inner join dept on emp.dept_id = dept.id

2、外连接

2.1 左外连接

概念:查询左表所有数据 以及两张表交集的部分数据

语法:SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件...

SELECT emp.name,dept.name '部门名称' FROM emp LEFT OUTER JOIN dept ON emp.dept_id = dept.id

2.2 右外连接

概念:查询右表所有数据 以及两张表交集的部分数据

SELECT emp.name, dept.* FROM emp RIGHT OUTER JOIN dept ON emp.dept_id = dept.id

3、自连接

概念:当前表与自身的连接查询,自连接必须使用表别名 可以是内连接查询 也可以是外连接查询

语法:SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件

-- 查询员工所属领导的信息
SELECT a.name '员工',b.name '领导' from emp a JOIN emp b on a.managerid = b.id

4、联合查询

概念: 就是把多次查询的结果合并起来 行程一个新的查询结果集

语法:SELECT 字段列表 FROM 表A... UNION[ALL] SELECT 字段列表 FROM 表B...

-- 将薪资低于5000的员工和年龄大于50的员工全部查找出来SELECT * FROM emp WHERE salary < 5000 UNION ALL SELECT * FROM emp WHERE age > 50-- 去掉ALL可以去重SELECT * FROM emp WHERE salary < 5000 UNION SELECT * FROM emp WHERE age > 50

注意:

  1. 条件字段列表需要保持一致,字段类型也要保持一致
  2. UNION ALL 会将全部数据合并在一起 UNION后会对合并的数据去重

5、子查询

概念:SQL语句中嵌套SELECT语句 称为嵌套查询 又称子查询

语法:SELECT * FROM t1 WHERE column1=(SELECT column1 FROM t2)

5.1 标量子查询

概念:子查询结果为单个值

常用操作符:=、<>、>、>=、< 、<=

-- 查询研发部的所有员工信息
-- a. 查询"销售部" 部分ID
SELECT id FROM dept WHERE name = '研发部'
-- b. 根据销售部部门id 查询员工信息
SELECT * FROM emp WHERE dept_id = 1
-- c. 结合
SELECT * FROM emp WHERE dept_id = (SELECT id FROM dept WHERE name = '研发部')

5.2 列子查询

概念:子查询结果为一列

常用操作符:IN、NOT IN、ANY、SOME、ALL

-- 查询“研发部” 和 “市场部” 的所有员工信息
-- a. 查询“销售部” 和 “市场部” 的部门id
SELECT id FROM dept WHERE name = '研发部' OR name = '市场部'
-- b. 根据部门ID,查询员工信息
SELECT * FROM emp WHERE dept_id IN(1,2)
-- c. 结合
SELECT * FROM emp WHERE dept_id IN((SELECT id FROM dept WHERE name = '研发部' OR name = '市场部'))

5.3 行子查询

概念:子查询结果为一行

常用操作符:=、<>、IN、NOT、IN

-- 查询与"晓飞"的薪资及直属领导相同的员工信息
-- a. 查询"晓飞"的薪资与直属领导
SELECT salary,managerid FROM emp WHERE name='晓飞'-- b. 查询与"晓飞"的薪资及直属领导相同的员工信息
SELECT * FROM emp WHERE (salary,managerid) = (SELECT salary,managerid FROM emp WHERE name='晓飞')

5.4 表子查询

概念:子查询结果为多行多列

常用操作符:IN

-- 例:查询与“赵四”,“王炸” 的职位和薪资相同的员工信息
-- a. 查询赵四和王炸的职位和薪资
SELECT job,salary FROM emp WHERE name IN('赵四','王炸')
-- b. 查询与“赵四”,“王炸” 的职位和薪资相同的员工信息
SELECT * FROM emp WHERE (job,salary) IN (SELECT job,salary FROM emp WHERE name IN('赵四','王炸'))-- 例:查询入职日期是“2004-01-01”之后的员工信息 及其部门信息
-- a. 查询入职日期是“2004-01-01”之后的员工信息
SELECT * FROM emp WHERE entrydate > '2004-01-01'
-- b. 查询入职日期是“2004-01-01”之后的员工信息 及其部门信息
SELECT e.*,d.* FROM (SELECT * FROM emp WHERE entrydate > '2004-01-01') e LEFT JOIN dept d ON e.dept_id = d.id

相关文章:

07、MySQL-多表查询

目录 1、内连接 1.1 隐式内连接 1.2 显式内连接 2、外连接 2.1 左外连接 2.2 右外连接 3、自连接 4、联合查询 5、子查询 5.1 标量子查询 5.2 列子查询 5.3 行子查询 5.4 表子查询 1、内连接 概念&#xff1a;相当于查询A、B表交集的部分数据 1.1 隐式内连接 语法&…...

20240809 每日AI必读资讯

乒乓球AI机器人赢了人类&#xff01;正反手灵活转换&#xff0c;擦网球高球都能接 - 谷歌发布首个达到人类竞技水平的机器人Agent&#xff0c;挑战乒乓球赛场。 - 机器人通过学习大量乒乓球状态数据&#xff0c;掌握了正手上旋球、反手瞄准等技能&#xff0c;展现出高速运动…...

《投资的原理》阅读笔记一

这是我准备集中学习投资类书籍后阅读的第8本书&#xff0c;但是是第一本读到一半决定从新开始、每章都写笔记的第一本书。 《投资的原理》的作者陈嘉禾先生是一位资深的价值投资者&#xff0c;书中也是大力弘扬着价值投资&#xff0c;跟我倾向于量化投资方向的想法并不合拍&am…...

金九银十,全网最详细的软件测试面试题总结

前面看到了一些面试题&#xff0c;总感觉会用得到&#xff0c;但是看一遍又记不住&#xff0c;所以我把面试题都整合在一起&#xff0c;都是来自各路大佬的分享&#xff0c;为了方便以后自己需要的时候刷一刷&#xff0c;不用再到处找题&#xff0c;今天把自己整理的这些面试题…...

ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现

一.环境配置 腾讯云的ubuntu操作系统&#xff0c;已经安装有docker 和 vulhub 直接来到 启动环境docker-compose&#xff0c;要在root权限下运行。 docker-compose up -d 若出现等待时间过长的情况&#xff0c;请参考这篇文章http://t.csdnimg.cn/SYhbE 访问http://公网ip:8…...

网络协议四 物理层,数据链路层

从这一节开始学习 五层模型。学习方法是从最底层物理层开始学习 七层模型 五层模型 各个层用的协议&#xff0c;以及加上协议后的称谓 各个层的作用 应用层&#xff1a;可以认为是原始数据&#xff0c;该数据称为 报文&#xff0c;用户数据。 运输层&#xff1a;也叫传输层&am…...

Python知识点:如何使用Twisted进行异步网络编程

Twisted是一个事件驱动的网络编程框架&#xff0c;支持异步编程&#xff0c;适用于处理大量并发网络连接的应用。使用Twisted进行异步网络编程可以分为以下几个步骤&#xff1a; 安装Twisted&#xff1a; 首先需要安装Twisted库&#xff0c;可以使用pip进行安装&#xff1a; pi…...

循环神经网络

一、RNN神经网络 基本网络结构 RNN神经网络数学模型 RNN反向传播 二、LSTM神经网络 LSTM的遗忘门 对数据进行筛选&#xff0c;有的抛弃&#xff0c;有的保留 LSTM的输入门 LSTM输出门 LSTM缓解RNN梯度消失问题...

SQL进阶技巧:有序数据合并问题之如何按照指定的规则对数据进行合并?【详解collect_list函数有序性保证】

目录 0 问题描述【小红书面试题】 1 数据准备 2 问题分析 3 小结 0 问题描述【小红书】 有如下需求,需要将左边的表变换成右边的表,注意字段内容的顺序及对应内容的一致性。 第一个字段为name,第二个字段为subject,第三个字段为score,变换后要求subject按照语文、数学…...

windows和office微软官方免费激活教程

微软提供了windows系统和office的官方免费激活&#xff0c;其实不用去买什么激活码&#xff0c;官方提供了激活方式&#xff0c;完全免费。目前测试没发现什么问题&#xff0c;windows还支持永久激活&#xff0c;比一些乱七八糟的kms激活工具还省心。 github地址&#xff1a;Gi…...

【C++ 面试 - 基础题】每日 3 题(七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…...

Java面试题精选:消息队列(一)

1、为什么使用消息队列 问题用意&#xff1a; 其实就是想问一下消息队列有哪些使用场景&#xff0c;你项目中什么业务场景用到了消息队列&#xff0c;有什么技术挑战。使用MQ后给你带来了什么好处 规范回答&#xff1a; 消息队列的常见使用场景很多&#xff0c;但比较核心的…...

宝塔面板启用 QUIC 与 Brotli 的完整教程

环境 系统&#xff1a;Ubuntu 22.04.4 LTS x86_64 宝塔版本&#xff1a;7.7.0 (可使用本博客提供的一键安装优化脚本) nginx版本&#xff1a;1.26.1 开放UDP端口 注意&#xff1a;在你的服务器商家那里也要开放443 udp端口 sudo ufw allow 443/udp然后重新加载 UFW 以使新…...

Linux 进程调度(二)之进程的上下文切换

目录 一、概述二、上下文切换的实现1、context_switch2、switch_mm3、switch_to 三、观测进程上下文切换 一、概述 进程的上下文切换是指在多任务操作系统中&#xff0c;当操作系统决定要切换当前运行的进程时&#xff0c;将当前进程的状态保存起来&#xff0c;并恢复下一个要…...

Oracle事物临时表

在Oracle数据库中&#xff0c;事务临时表是一种特殊的表类型&#xff0c;主要用于存储在事务处理过程中产生的临时数据。这些表的数据只对当前会话或事务可见&#xff0c;并且在事务结束时会自动清除。 事务临时表的特点 生命周期&#xff1a; 事务临时表中的数据在事务提交或…...

看图学sql之sql的执行顺序

学完前面的内容&#xff0c;我们已经掌握了基本的sql语法了&#xff0c;那我们学的 select, distinct, from, where,group by, having, order by, limit 他们具体的执行顺序是什么样的呢&#xff1f; 语法&#xff1a; SELECT distinct column1, column2 FROM table1 join …...

百日筑基第四十五天-从JAVA8走到JAVA9

JAVA9新特性 Java 9发布于 2017 年 9 月 21 日 。 快速创建不可变集合 增加了List.of()、Set.of()、Map.of() 和 Map.ofEntries()等工厂方法来创建不可变集合&#xff08;有点参考 Guava 的味道&#xff09;&#xff1a; List.of("Java", "C"); Set.of…...

力扣第五十七题——插入区间

内容介绍 给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表 intervals&#xff0c;其中 intervals[i] [starti, endi] 表示第 i 个区间的开始和结束&#xff0c;并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval [start, end] 表示另一个区…...

跟《经济学人》学英文:2024年08月03日这期 India’s economic policy will not make it rich

India’s economic policy will not make it rich A new World Bank report takes aim at emerging-market growth plans 原文&#xff1a; The developing world has fallen back in love with economic planning. As protectionism sweeps the West, poor countries are n…...

js 深拷贝、浅拷贝深度解析

赋值操作&#xff1a; let obj{a:1,b:[1,2,3],c:{m:2}}let newObjobjnewObj.a2newObj.b.push(4)newObj.c.m3console.log(obj,newObj); 将一个对象赋值给一个变量&#xff0c;其实就是将这个对象在栈内存中的引用地址复制给了这个变量&#xff0c;这两个对象指向堆内存中的同一个…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...