当前位置: 代码网 > it编程>数据库>MsSqlserver > 一文掌握SQL的 joins 语法

一文掌握SQL的 joins 语法

2024年11月03日 MsSqlserver 我要评论
sql 中的不同 join 类型:1. (inner)join(内连接):返回两个表中具有匹配值的记录。2. left(outer)join(左外连接):返回左表中的所有记录,以及右表中与之匹配的记录

sql 中的不同 join 类型:

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

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

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

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

现在详细举例说明:

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

employee_idnamedepartment_id
1alice1
2bob2
3davidnull

employees表

department_iddepartment_name
1hr
2engineering
3sales

departments表

 inner join 

select employees.name, departments.department_name  //要查的字段
from employees  //表1
inner join departments on employees.department_id = departments.department_id;  //表2,连接条件

结果是

namedepartment_name
alicehr
bobengineering

left (outer) join

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

select employees.name, departments.department_name
from employees
left join departments on employees.department_id = departments.department_id;
 

结果是

namedepartment_name
alicehr
bobengineering
davidnull

right (outer) join

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

select employees.name, departments.department_name
from employees
right join departments on employees.department_id = departments.department_id;

结果是

namedepartment_name
alicehr
bobengineering
nullsales

 full (outer) join

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

select employees.name, departments.department_name
from employees
full join departments on employees.department_id = departments.department_id;
namedepartment_name
alicehr
bobengineering
davidnull
nullsales

总结

  • inner join:只返回两个表中匹配的记录。
  • left join:返回左表中的所有记录,以及右表中匹配的记录。
  • right join:返回右表中的所有记录,以及左表中匹配的记录。
  • full join:返回两个表中的所有记录,当左表或右表中有匹配时返回匹配的记录。

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

到此这篇关于sql的 joins 语法的文章就介绍到这了,更多相关sql joins 语法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com