MySQL的多表查询之联合查询

  1. union联合查询
  • union用于合并两个或多个select语句的结果集

  • unnion将两个表上下拼在一起

  • 要求:

    –两边select语句的字段数必须一致

    –两边可以有不同数据类型的字段

    –字段名默认按左边的表来设置

    select column_name from table1
    union
    select column_name from table2;
    
  1. inner join:内连接(交集)
    在这里插入图片描述
  • nner join 根据两个或多个表之间的共同列(即连接条件)来组合行。使用 INNER JOIN 时,只有当连接条件满足时,即在两个或多个表中都存在匹配的行时,才会返回结果。

  • 如果没有匹配的行,INNER JOIN 不会返回这些行

  • inner 可省略

  • 语法:

    --隐式内连接(SQL92标准)
    select * from table1, table2 where condition;
    
    --显式内连接(sql99标准)
    SELECT columns
    FROM table1
    INNER JOIN table2 ON table1.common_field = table2.common_field,
    [INNER JOIN table3 ON table1.common_field = table3.common_field];
    
    --多表内连接
    SELECT columns
    FROM table1
    INNER JOIN table2 ON table1.common_field = table2.common_field,
    INNER JOIN table3 ON table1.common_field = table3.common_field;
    

    table1table2 是要连接的两个表。

    common_field 是两个表共有的列,用于连接这两个表。

    columns 是你想要从连接的结果中选择的列。

  • 示例:

    假设有两个表:employeesdepartmentsemployees 表包含员工信息,departments 表包含部门信息,它们通过 department_id 列连接。

    SELECT 
    	employees.name, departments.department_name
    FROM 
    	employees
    INNER JOIN departments ON employees.department_id = departments.id;
    
  
  -- 这个查询将返回所有员工的姓名和他们所属的部门名称,但只有当员工和部门在 `department_id` 上有匹配时才会显示。 
 
  select 
  	departments.name, group_concat(employees.ename), count(*) 
  from 
  	dept
  join emp on departments.id = employees.department_id 
  group by 
  	departments.name 
  having 
  	count(*)>=3 
  order by 
  	count(*) desc;

– 这个查询将返回部门员工数≥3的部门名称,部门员工姓名,部门员工数量,并按部门员工数量的降序排列

  1. left [outer] join:左(外)连接
    在这里插入图片描述
  • left join关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配,如果右表没有匹配,则common_field结果为null。

  • 语法

    SELECT columns
    FROM table1
    LEFT JOIN table2 ON table1.common_field = table2.common_field;
    
  1. rigth (outer)join:右(外)连接
    在这里插入图片描述
  • ight join关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配,如果右表没有匹配,则common_field结果为null。

  • 语法

    SELECT columns
    FROM table1
    right JOIN table2 ON table1.common_field = table2.common_field;
    

在这里插入图片描述
full join:满外连接,mysql不支持满外连接,可以使用union关键字实现左外连接和右外连接的并集达到满外连接的效果

select * from table1 left join table2 on table1.column = taable2.column
union
select * from table1 right join table2 on table1.column = taable2.column
-- 使用union on也可以,union去重了,union on 未去重

6、交叉连接查询

  • 交叉连接查询返回被连接的两个表所有数据行的笛卡尔积

  • 笛卡尔积可以理解为一张表的每一行去和另外一张表的任意一行进行匹配

  • 假如A表有m行数据,B表有n行数据,则会返回m*n行数据

  • 这种查询会产生很多冗余数据,后期的其他查询可以在该集合的基础上进行条件筛选

  • 语法

select * from table1, table2, table3...;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Kubernets】配置类型资源 Etcd, Secret, ConfigMap

文章目录 所有资源概览Etcd详细说明一、基本概念二、主要功能三、架构与组件四、数据模型与操作五、安全与认证六、集群部署与管理 Secret详细说明一、Secret 的类型二、Secret 的创建三、Secret 的使用四、Secret 的更新与删除五、Secret 的安全性 ConfigMap详细说明一、Confi…

【分布式训练(5)】无法 kill PID?如何 kill 休眠中的 GPU 占用进程

【分布式训练 debug】VS Code Debug 技巧:launch.json实用参数 【分布式训练(2)】深入理解 DeepSpeed 的 ZeRO 内存优化策略 (三阶段的区别) 【分布式训练(3)】accelerator deepspeed debug 报错 “Timed out waiting…

华为OD机试 - 最大利润 - 贪心算法(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

光伏仿真系统的好处

现在的做光伏电站的项目,很多任务都是后置的,这样的话问题的暴露就会在每个时间段,光伏仿真系统的好处,就是在做每一步工作前,系统已经把每一步的工作都分配好了,有任何问题都可以提前知道, 获…

awk工具的基本使用

awk的作用从整体上来说就是用来分隔文本的。 默认是根据空白字符,将一行文件内容分隔成多部份。 常用选项: 使用-F的选项来指定awk工具使用的分隔符, 在awk内部有类似于$1,$2,$3这样的变量,$1代表第一部分,$2代表第…

密码管理APP系统规格说明书(初版)

这里写目录标题 1 引言1.1 背景1.2 目的1.3 范围 2 系统需求2.1 功能需求2.2 性能需求2.3 安全需求2.4 兼容性需求 3 系统设计3.1 总体架构3.1.1 系统架构概述3.1.2 技术选型 3.2 功能模块设计3.2.1 密码生成模块3.2.2 安全存储模块3.2.3 自动填充模块3.2.4 多平台支持模块3.2.…

开源商城系统crmeb phpstudy安装配置

BOSS让我最快时间部署一套开源商场系统,今天就以crmeb为例。 快速部署在linux中我会首选docker,因为我要在windows中部署,本文就选用phpstudy集成环境做了。 什么是crmeb 我从官网摘点: CRMEB产品与服务 CRMEB通过将CRM&#x…

SPI通信时序

前言: 作为Motorola的又一伟大发明的SPI总线通信协议,在理解和应用上也是十分复杂且难以理解,博主想通过这篇文章想把SPI的原理和应用大概讲一下,同时也是记录自己对于I2C的学习和理解。 SPI概述: SPI 是英语Serial P…

【C语言复习专题】函数调用

【C语言复习专题】函数调用 1.递归是什么?1.1递归的思想:1.2递归的限制条件 2.递归举例2.1eg1:求n的阶乘2.1.1 分析和代码实现2.1.2作图演示过程 2.2 eg2:顺序打印一个整数的每一位2.2.1分析 3.递归与迭代 1.递归是什么&#xff1…

2-124 基于matlab得结构稀疏字典实现SAR图像低秩重建

基于matlab得结构稀疏字典实现SAR图像低秩重建,通过K-SVD和W-KSVD结合OMP进行重建。K-SVD算法是一种字典学习算法,能够对字典进行优化,使其能够更好地表示训练样本集。W-KSVD算法是K-SVD算法的扩展,它能够利用权重信息对字典进行优…

华为---Super VLAN简介及示例配置

目录 1. Super VLAN技术产生背景 2. Super VLAN概念 3. Super VLAN应用场景 4. Super VLAN工作原理 5. Super-VLAN主要配置命令 6. Super-VLAN主要配置步骤 7. 示例配置 7.1 示例场景 7.2 网络拓扑 7.3 配置代码 7.4 代码解析 7.5 测试验证 1. Super VLAN技术产生背…

【开源免费】基于SpringBoot+Vue.JS房屋租赁系统(JAVA毕业设计)

本文项目编号 T 020 ,文末自助获取源码 \color{red}{T020,文末自助获取源码} T020,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

ubuntu20.4环境下gcc-aarch64交叉编译器的安装

交叉编译器(Linux环境)arm gcc 8.3一共有5个版本,常用的有4个版本(另外一个为大端linux版本),分别是32bit裸机版本(arm-eabi)、64bit裸机版本(aarch64-elf)、…

2015年-2016年 软件工程程序设计题(算法题)实战_c语言程序设计数据结构程序设计分析

文章目录 2015年1.c语言程序设计部分2.数据结构程序设计部分 2016年1.c语言程序设计部分2.数据结构程序设计部分 2015年 1.c语言程序设计部分 1.从一组数据中选择最大的和最小的输出。 void print_maxandmin(double a[],int length) //在一组数据中选择最大的或者最小的输出…

EM算法学习

1.EM算法的介绍 可以发现:计算出θA和θB的值的前提是知道A、B币种的抛掷情况。 所以我们需要使用EM算法:求出每轮选择硬币种类的概率 2.EM算法执行过程: 第一步:首先初始化设置一组PA和PB证明的值。然后通过最大似然估计得到每…

2024软考网络工程师笔记 - 第3章.广域通信网

文章目录 广域网物理层特性1️⃣公共交换电话网 PSTN2️⃣本地回路3️⃣机械特性4️⃣电气特性 🕑流量与差错控制1️⃣流量与差错控制2️⃣流量控制——亭等协议3️⃣流控机制——滑动窗口协议4️⃣差错控制5️⃣差错控制——停等协议6️⃣差错控制——选择重发ARQ协…

MySQL【知识改变命运】08

数据库约束 1:约束的几个类型2:NOT NULL非空约束3:UNIQUE 唯⼀约束4:PRIMARY KEY 主键约束4.1:回顾 5:FOREIGN KEY 外键约束5.1:创建班级表(主表),并初始化数据5.2:重构学⽣表(从表)…

【Golang】Go语言http编程底层逻辑实现原理与实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Docker 拉取镜像时配置可用镜像源(包含国内可用镜像源)

文章目录 写在前面一、Docker 官方源二、更换Docker 国内可用镜像源 (推荐使用)参考链接 写在前面 自己的测试环境: Ubuntu20.04,docker-27.3.1 一、Docker 官方源 打开 /etc/docker/daemon.json文件: sudo gedit …

STM32F4- SD卡和 FATFS文件系统

单片机系统常需大容量存储设备,如U盘、FLASH芯片、SD卡等。 其中,SD卡因容量大、支持SPI/SDIO驱动、尺寸多样,成为单片机系统的优选。 STM32F4开发板自带SD卡接口,使用SDIO接口驱动,支持高速数据传输。 1.1 SDIO 简介…