一篇文章,讲清SQL的 joins 语法

发布于:2024-09-17 ⋅ 阅读:(82) ⋅ 点赞:(0)

SQL 中的不同 JOIN 类型:

1. (INNER)JOIN(内连接):返回两个表中具有匹配值的记录。

2. LEFT(OUTER)JOIN(左外连接):返回左表中的所有记录,以及右表中与之匹配的记录。

3. RIGHT(OUTER)JOIN(右外连接):返回右表中的所有记录,以及左表中与之匹配的记录。

4. FULL(OUTER)JOIN(全外连接):返回在左表或右表中有匹配的所有记录。

现在详细举例说明:

假设我们有两个表 employees 和 departments:

employee_id name department_id
1 Alice 1
2 Bob 2
3 David NULL

employees表

department_id department_name
1 HR
2 Engineering
3 Sales

departments表

 INNER JOIN 

SELECT employees.name, departments.department_name  //要查的字段
FROM employees  //表1
INNER JOIN departments ON employees.department_id = departments.department_id;  //表2,连接条件

结果是

name department_name
Alice HR
Bob Engineering

LEFT (OUTER) JOIN

LEFT JOIN 返回左表中的所有记录,以及右表中匹配的记录。如果右表中没有匹配的记录,则结果中包含 NULL。

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;

结果是

name department_name
Alice HR
Bob Engineering
David NULL

RIGHT (OUTER) JOIN

RIGHT JOIN 返回右表中的所有记录,以及左表中匹配的记录。如果左表中没有匹配的记录,则结果中包含 NULL。

SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.department_id;

结果是

name department_name
Alice HR
Bob Engineering
NULL Sales

 FULL (OUTER) JOIN

FULL JOIN 返回两个表中的所有记录,当左表或右表中有匹配时返回匹配的记录。如果没有匹配,则结果中包含 NULL。

SELECT employees.name, departments.department_name
FROM employees
FULL JOIN departments ON employees.department_id = departments.department_id;

name department_name
Alice HR
Bob Engineering
David NULL
NULL Sales

总结

  • INNER JOIN:只返回两个表中匹配的记录。
  • LEFT JOIN:返回左表中的所有记录,以及右表中匹配的记录。
  • RIGHT JOIN:返回右表中的所有记录,以及左表中匹配的记录。
  • FULL JOIN:返回两个表中的所有记录,当左表或右表中有匹配时返回匹配的记录。

希望这些示例能帮助你更好地理解 SQL 中的不同 JOIN 类型。


网站公告

今日签到

点亮在社区的每一天
去签到