MySQL里的left join 和right join以及inner join原创
在 MySQL 中,LEFT JOIN 和 RIGHT JOIN 是两种不同的关联查询语法,用于将两个表连接起来,获取符合某些条件的记录。
LEFT JOIN 和 RIGHT JOIN 的主要区别在于连接的方向和结果集中的数据,具体如下:
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
2
3
4
- 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
2
3
4
需要注意的是,LEFT JOIN 和 RIGHT JOIN 语法可以互相转换,即将一个 LEFT JOIN 转换为 RIGHT JOIN,只需要交换左右表的顺序即可,反之亦然。
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
2
3
与 LEFT JOIN 和 RIGHT JOIN 不同的是,INNER JOIN 不会返回任何 NULL 值,因为它只返回两个表中都存在的记录。在 INNER JOIN 中,如果左表或右表中没有与之匹配的行,则该行不会被包含在结果集中。
因此,LEFT JOIN、RIGHT JOIN 和 INNER JOIN 的主要区别在于它们在匹配行不存在时返回的结果不同。LEFT JOIN 和 RIGHT JOIN 可能会返回 NULL 值,而 INNER JOIN 则不会。
上次更新: 8/28/2024
- 01
- GPT分区使用 parted 扩展分区的操作流程 原创08-28
- 02
- VictoriaMetrics 集群版安装与配置 原创08-24
- 03
- Kubernetes (k8s) 相关名词详解 原创06-27