題目描述:
表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