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 类型。
到此这篇关于sql的 joins 语法的文章就介绍到这了,更多相关sql joins 语法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论