左連接查詢
保留左邊主表的所有行(即使在右表沒有匹配的行),右表輸出滿足 on 條件的行,不滿足的輸出null
示例:組合兩個表 - 力扣
表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
# from A # left join B # on select A.FirstName, A.LastName, B.City, B.State from Person as A left join Address as B on A.PersonId=B.PersonId
(170ms) # 本題可優化思路:Address表可能重復保存某條地址信息,因此Address表先用distinct去重
select A.FirstName, A.LastName, B.City, B.State from Person as A left join (select distinct PersonId, City, State from Address) as B on A.PersonId=B.PersonId
(150ms)
輸入: {"headers": {"Person": ["PersonId", "LastName", "FirstName"], "Address": ["AddressId", "PersonId", "City", "State"]}, "rows": {"Person": [[1, "Wang", "Allen"]], "Address": [[1, 2, "New York City", "New York"]]}} 輸出: {"headers":["FirstName","LastName","City","State"],"values":[["Allen","Wang",null,null]]}