數據庫左連接 a left join b on


左連接查詢
保留左邊主表的所有行(即使在右表沒有匹配的行),右表輸出滿足 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]]}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM