Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MySQL

    • MySQL8一键安装配置优化
    • MySQL导出CSV格式解决乱码
    • MySQL 角色管理
    • MySQL网络抓包审计
    • MySQL性能压测
    • MySQL配合Consul读写分离
    • Gh-ost重建表,清除表碎片率
    • MySQL MGR配合MySQL-router实现innodb-cluster
    • MySQL 快速分析binlog定位问题
    • MySQL执行计划分析
    • DBA常用SQL和命令整理备查
    • mysqldump实时同步数据
    • MySQL的事务隔离级别
    • MySQL存储过程批量生成数据
    • MySQL insert on duplicate key update,replace into , insert ignore的理解
    • MySQL不同字符集之间的区别和选择
    • MySQL为什么有时候会选错索引
    • MySQL死锁问题
    • MySQL使用SQL语句查重去重
    • MySQLdump逻辑备份
    • MySQL主从跳过异常GITD
    • MySQL8设置slowlog记录所有语句
    • MySQL8快速克隆插件使用指南
    • MySQL8双1设置保障安全
    • MySQL锁
    • innodb cluster安装
    • MySQL里的left join 和right join以及inner join
    • optimize table和 analyze table的区别
    • MySQL 字段的区分度计算公式
    • MySQLReplicaSet 安装
    • 脚本实现MySQL ReplicaSet 高可用
    • MySQL 的Left join,Right join和Inner join 的区别
    • MySQL45讲学习笔记
  • Redis

  • Keydb

  • TiDB

  • MongoDB

  • Elasticsearch

  • Kafka

  • victoriametrics

  • BigData

  • Sqlserver

  • 数据库
  • MySQL
Carry の Blog
2023-03-16

MySQL里的left join 和right join以及inner join原创

在 MySQL 中,LEFT JOIN 和 RIGHT JOIN 是两种不同的关联查询语法,用于将两个表连接起来,获取符合某些条件的记录。

LEFT JOIN 和 RIGHT JOIN 的主要区别在于连接的方向和结果集中的数据,具体如下:

  1. LEFT JOIN:

    LEFT JOIN 操作会返回左表中所有行以及符合条件的右表中的行,如果右表中没有匹配的行,则返回 NULL 值。左表是指在 JOIN 语句中写在左侧的表。

例如,下面的 SQL 语句将返回所有部门信息,包括那些没有员工的部门:

SELECT d.*, e.*
FROM departments d
LEFT JOIN employees e ON d.department_id = e.department_id;

1
2
3
4
  1. RIGHT JOIN: RIGHT JOIN 操作会返回右表中的所有行以及符合条件的左表中的行,如果左表中没有匹配的行,则返回 NULL 值。右表是指在 JOIN 语句中写在右侧的表。

例如,下面的 SQL 语句将返回所有员工信息,包括那些没有部门的员工:

SELECT e.*, d.*
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.department_id;

1
2
3
4

需要注意的是,LEFT JOIN 和 RIGHT JOIN 语法可以互相转换,即将一个 LEFT JOIN 转换为 RIGHT JOIN,只需要交换左右表的顺序即可,反之亦然。

  1. INNER JOIN

    它返回两个表中共同匹配的记录,即返回左表和右表中都存在的记录。INNER JOIN 可以看做是 LEFT JOIN 和 RIGHT JOIN 的交集部分。 例如,下面的 SQL 语句将返回所有员工和部门信息,但只包括两个表中都存在的记录:

SELECT e.*, d.*
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id;
1
2
3

与 LEFT JOIN 和 RIGHT JOIN 不同的是,INNER JOIN 不会返回任何 NULL 值,因为它只返回两个表中都存在的记录。在 INNER JOIN 中,如果左表或右表中没有与之匹配的行,则该行不会被包含在结果集中。

因此,LEFT JOIN、RIGHT JOIN 和 INNER JOIN 的主要区别在于它们在匹配行不存在时返回的结果不同。LEFT JOIN 和 RIGHT JOIN 可能会返回 NULL 值,而 INNER JOIN 则不会。

上次更新: 4/24/2025

← innodb cluster安装 optimize table和 analyze table的区别→

最近更新
01
tidb fast ddl
04-04
02
TiDB配置文件调优 原创
04-03
03
如何移除TiDB中的表分区 原创
04-03
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式