数据库

学会使用mysql联合两张表

学会使用mysql联合两张表

表一:
+-------------+---------+
| 列名         | 类型     |
+-------------+---------+
| PersonId    | int     |
| FirstName   | varchar |
| LastName    | varchar |
+-------------+---------+
PersonId 是上表主键

表二:
+-------------+---------+
| 列名         | 类型    |
+-------------+---------+
| AddressId   | int     |
| PersonId    | int     |
| City        | varchar |
| State       | varchar |
+-------------+---------+
AddressId 是上表主键

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/combine-two-tables
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

要求:
编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:
FirstName, LastName, City, State

首先我们要明白的就是有哪些方式进行联表!

  • left join
  • right join
  • inner join
  • outer join

一张图进行总结

img

题目意思是就算没有地址信息(为NULL),那么姓名也会打印出来。即重要的表示Person表,需要的是Person的信息。

那肯定选择将Person作为左表,Address作为右表,使用left join,对应左上角的图。

测试

使用一个极端测试案例,两表没有同一个PersonId,但是也要打印出PersonId为1的信息。

image-20210316215605181

select FirstName, LastName, City, State from Person left join Address on Person.PersonId = Address.PersonId;

image-20210316215810554

如果使用right join那么将会出现只有地址和国家,打印的就不是我们想要的person信息。

image-20210316215938687

如何拥有一个独立域名的邮箱?

上一篇

golang二维切片初始化

下一篇

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

个人微信公众号

we-tuiguang

qq交流群

群号:1046260719

微信扫一扫

微信扫一扫