表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
解法:不能使用常規的關聯查詢,因為題目說明不是每個person都有地址信息
所以使用left join來查詢,右表沒有信息的時候就不顯示
LEFT JOIN 關鍵字從左表(table1)返回所有的行,即使右表(table2)中沒有匹配。如果右表中沒有匹配,則結果為 NULL。
反例:select FirstName,LastName,City,State from Person,Address where Person.PersonId = Address.PersonId
因為不是每個person都有address,所以where后面的語句會被過濾掉,inner join具有同樣功能
正例:select FirstnAME,LastName,City,State from Person left join Address on Person.PersonId = Address.PersonId