Mlog3: LeetCode --组合两个表

2019-4-5

学习Mysql ,每日做一道数据库题目,文章仅用做做题记录用途。--章记

文章目录:

  1. 题目要求--分析
  2. 具体实现--动手
  3. 结果
  4. 知识拓展
  5. 总结

1. 题目要求--分析

表1: Person

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

表2: Address

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

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

FirstName, LastName, City, State

分析:
1、选取表格中的部分数据,用SELECT(用于从数据库中选取数据);
2、涉及两个表格,用JOIN (用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段);
3、无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息,用LEFT JOIN(LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行);

2. 具体实现--动手

# Write your MySQL query statement below
select Person.FirstName,Person.LastName,Address.City,Address.State
from Person 
left join Address 
on Person.PersonId=Address.PersonId

3. 结果

2019-4-5

4. 知识拓展

INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行

5. 总结

我希望自己的大脑像 CPU 一样处理日常事物,每一件事就像一个进程,当我 focus on 一件事时,大脑被这件事完全占据,当进程由于外部资源限制被停滞时可以回到等待队列。但我希望每一件事都是按照最快时间去处理进入完成队列,每件事都尽可能少的出现在等待队列,这样每天就会好快活。

你可能感兴趣的:(Mlog3: LeetCode --组合两个表)