濮阳雅爱 发表于 2025-7-9 00:09:19

INNER JOIN, LEFT JOIN, RIGHT JOIN 的区别

今天我们来一起探索下 JOIN,JOIN 作为数据库操作的核心概念,用于合并两个或多个表中的数据。
一、JOIN (INNER JOIN)
1、基本功能:返回两个表中匹配成功的行。
2、特点:

[*]只保留两表中都满足连接条件的记录;
[*]如果某行在一个表中存在但在另一个表中没有匹配项,则该行不会出现在结果中;
[*]结果集的行数 ≤ 两个原表的行数。
3、语法:
SELECT columns
FROM table1
JOIN table2 ON table1.column = table2.column;4、示例:
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;二、LEFT JOIN (LEFT OUTER JOIN)
1、基本功能:返回左表的所有行,即使右表中没有匹配。
2、特点:

[*]保留左表的全部记录;
[*]当右表无匹配时,右表字段显示为 NULL;
[*]结果集的行数 = 左表的行数。
3、语法:
SELECT columns
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;4、示例:
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.dept_id = departments.dept_id;三、RIGHT JOIN (RIGHT OUTER JOIN)
1、基本功能:返回右表的所有行,即使左表中没有匹配。
2、特点:

[*]保留右表的全部记录;
[*]当左表无匹配时,左表字段显示为 NULL;
[*]结果集的行数 = 右表的行数;
[*]实际使用较少,通常可以用 LEFT JOIN 替代。
3、语法:
SELECT columns
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;4、示例:
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.dept_id = departments.dept_id;实际使用建议

[*]INNER JOIN 是最常用的,适用于需要两个表都有数据的场景;
[*]LEFT JOIN 常用于需要主表完整数据,关联表可有可无的情况;
[*]RIGHT JOIN 使用较少,通常可以通过调换表顺序用 LEFT JOIN 实现;
[*]注意 NULL 值的处理,特别是在 WHERE 条件中。
在强者的世界中,即便是戴着镣铐跳舞,舞也会跳得铿锵有力。-- 烟沙九洲

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: INNER JOIN, LEFT JOIN, RIGHT JOIN 的区别