mysql的inner join 和left join区别

1. INNER JOIN

INNER JOIN 只返回两个表中满足连接条件的匹配行。换句话说,它只返回那些在连接的两个表中都有匹配值的行。如果某一行在其中一个表中没有匹配项,那么这行不会出现在结果集中。

写法:

sql 复制代码
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;

假设有两个表 employees 和 departments:

bash 复制代码
employees:
+----+----------+------------+
| id | name     | dept_id    |
+----+----------+------------+
| 1  | Alice    | 1          |
| 2  | Bob      | 2          |
| 3  | Charlie  | NULL       |
+----+----------+------------+

departments:
+----+--------------+
| id | department   |
+----+--------------+
| 1  | HR           |
| 2  | Engineering  |
| 3  | Marketing    |
+----+--------------+

执行 INNER JOIN:

sql 复制代码
SELECT employees.name, departments.department
FROM employees
INNER JOIN departments
ON employees.dept_id = departments.id;

结果为:

bash 复制代码
+--------+--------------+
| name   | department   |
+--------+--------------+
| Alice  | HR           |
| Bob    | Engineering  |
+--------+--------------+

2. LEFT JOIN

LEFT JOIN 返回左表中的所有行,即使在右表中没有匹配项。在这种情况下,右表中的结果为 NULL。

用法:

sql 复制代码
SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;

同上文中提到的表,执行以下SQL

sql 复制代码
SELECT employees.name, departments.department
FROM employees
LEFT JOIN departments
ON employees.dept_id = departments.id;

执行结果如下:

bash 复制代码
+--------+--------------+
| name   | department   |
+--------+--------------+
| Alice  | HR           |
| Bob    | Engineering  |
| Charlie| NULL         |
+--------+--------------+
相关推荐
爱可生开源社区10 分钟前
SQLShift V5.0 发布!引入增强模型:复杂 SQL 转换准确率质变
数据库·sql
CC.GG10 分钟前
【C++】面向对象三大特性之一——继承
java·数据库·c++
郑州光合科技余经理14 分钟前
技术架构:跑腿配送系统海外版源码全解析
java·开发语言·前端·数据库·架构·uni-app·php
爱可生开源社区17 分钟前
SCALE | 2025 年 11 月《大模型 SQL 能力排行榜》发布
数据库·sql·llm
计算机学长felix24 分钟前
基于SpringBoot的“某学院教室资产管理系统”的设计与实现(源码+数据库+文档+PPT)
数据库·spring boot·后端
周杰伦_Jay29 分钟前
【MySQL】核心特性+实操教程(含SQL命令+表格对比+优化技巧)
sql·mysql
小园子的小菜30 分钟前
Redis序列化生产实践:从选型到落地的案例指南
数据库·redis·缓存
o***111435 分钟前
PostgreSQL的备份方式
数据库·postgresql
盼哥PyAI实验室35 分钟前
【超详细教程】Python 连接 MySQL 全流程实战
python·mysql·oracle
橘子编程40 分钟前
仓颉语言变量与表达式解析
java·linux·服务器·开发语言·数据库·python·mysql