[LeetCode-SQL]175. 组合两个表(SQL)left-join、含SQL的7种连接图示
1. 题目
2. 读题(需要重点注意的东西)
思路(left-join):
要求编写一个SQL查询来报告 Person 表中每个人的姓、名、城市和州;
如果 personId 的地址不在 Address 表中,则返回为空 null 。
- 通过题意我们可以知道,这需要连接两张表进行查询
- 并且要保留Person 表中的每个人,即整张Person表都要被输出,因此选择left-join,保留左表的所有信息
- 并查询出PersonId 相同的Address 表中的城市和州。
此外,注意:
- where 是在两表连接好后再判断条件,如果不满足条件就直接过滤了,因此不会完整地返回左右表
- on 不影响 left/right-join返回完整的左/右表
3. 解法
---------------------------------------------------解法---------------------------------------------------
# Write your MySQL query statement below
select
FirstName,LastName,City,State
from
Person p left join Address a # 将Person 别名置为 p,Address 的别名置为 a
on
p.personId = a.personId;
可能存在的问题:
4. 总结
多表的联结查询分为如下三类:
- left-join 保留左表所有信息
- right-join 保留右表所有信息
- inner-join 取两表的公共数据
SQL的7种连接