mysql--联合两张表提取需要的信息
大家好我是CloudCoder,云计算码农,专注分享linux/go/java等相关技术。
学会使用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
一张图进行总结
那肯定选择将Person作为左表,Address作为右表,使用left join,对应左上角的图。
测试
使用一个极端测试案例,两表没有同一个PersonId,但是也要打印出PersonId为1的信息。
select FirstName, LastName, City, State from Person left join Address on Person.PersonId = Address.PersonId;
如果使用right join那么将会出现只有城市和国家,打印的就不是我们想要的person信息。