LeetCode-175:組合兩個表

涼初發表於2019-01-17

題目描述:

表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

SQL架構:

1 Create table Person (PersonId int, FirstName varchar(255), LastName varchar(255));
2 Create table Address (AddressId int, PersonId int, City varchar(255), State varchar(255));
3 Truncate table Person;
4 insert into Person (PersonId, LastName, FirstName) values (`1`, `Wang`, `Allen`);
5 Truncate table Address;
6 insert into Address (AddressId, PersonId, City, State) values (`1`, `2`, `New York City`, `New York`);

解題思路:

  題目要求不管有沒有地址資訊,都需要返回person的資訊,使用left join連線即可

解決方案:

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

 

 

相關文章