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

【MYSQL】七种 SQL JOINS 的实现

在这里插入图片描述

1. 内连接 (INNER JOIN) 中图

SELECT e.employee_id, e.last_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
  • 说明:返回两个表中匹配的记录

2. 左外连接 (LEFT JOIN) 左上图

SELECT e.employee_id, e.last_name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id;
  • 说明:返回 employees 表中的所有记录,以及 departments 表中匹配的记录。如果 departments 表中没有匹配的记录,则返回 NULL。

3. 右外连接 (RIGHT JOIN) 右上图

SELECT e.employee_id, e.last_name, d.department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.department_id;
  • 说明:返回 departments 表中的所有记录,以及 employees 表中匹配的记录。如果 employees 表中没有匹配的记录,则返回 NULL。

4. 左外连接 - 无匹配记录 (LEFT JOIN with WHERE) 左中图

SELECT e.employee_id, e.last_name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id
WHERE d.department_id IS NULL;
  • 说明:返回 employees 表中没有匹配 departments 表的记录。

5. 右外连接 - 无匹配记录 (RIGHT JOIN with WHERE) 右中图

SELECT e.employee_id, e.last_name, d.department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.department_id
WHERE e.employee_id IS NULL;
  • 说明:返回 departments 表中没有匹配 employees 表的记录。

6. 全外连接 (FULL OUTER JOIN) 左下图

SELECT e.employee_id, e.last_name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id
UNION ALL
SELECT e.employee_id, e.last_name, d.department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.department_id
WHERE e.employee_id IS NULL;
  • 说明:返回两个表中所有的记录,包括不匹配的记录。由于 SQL 标准不支持 FULL OUTER JOIN,这里使用 UNION ALL 来模拟。

7. 全外连接 - 无匹配记录 (FULL OUTER JOIN with WHERE) 右下图

SELECT e.employee_id, e.last_name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id
WHERE d.department_id IS NULL
UNION ALL
SELECT e.employee_id, e.last_name, d.department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.department_id
WHERE e.employee_id IS NULL;
  • 说明:返回两个表中没有匹配的记录。同样使用 UNION ALL 来模拟 FULL OUTER JOIN 的效果。

http://www.kler.cn/a/407100.html

相关文章:

  • git使用(二)
  • transformer.js(一):这个前端大模型运行框架的可运行环境、使用方式、代码示例以及适合与不适合的场景
  • PDF电子发票信息转excel信息汇总
  • Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
  • go的依赖注入究竟是毒药还是解药
  • 飞凌嵌入式T113-i开发板RISC-V核的实时应用方案
  • RabbitMQ学习-One
  • 关于图论建模的一份介绍
  • 代理IP在后端开发中的应用与后端工程师的角色
  • 企业级服务器BIOS配置
  • 培训机构中教务系统的架构设计与实现
  • STM32 蜂鸣器报警
  • 设计模式之 适配器模式
  • Redis自学之路—高级数据结构具体方法解析(六)
  • <硬件有关> 内存攒机认知入门,内存的选择 配置 laptop PC 服务器
  • Wekan看板安装部署与使用介绍
  • 使用OpenSSL创建CA,并基于CA创建证书
  • ctfshow
  • 彻底理解Redis的持久化方式
  • type和interface的区别
  • 蓝队基础,网络七杀伤链详解
  • [C语言]第十三节 指针一基础知识到高级技巧的全景探索
  • BERT的中文问答系统39
  • 4644 DCDC电源芯片在相控阵雷达的应用(完整版)
  • Metasploit模块具体有哪些?
  • Dubbo集成SpringBoot实现远程服务调用