SQL架構mysql
表1: Person
sql
+-------------+---------+ | 列名 | 類型 | +-------------+---------+ | PersonId | int | | FirstName | varchar | | LastName | varchar | +-------------+---------+ PersonId 是上表主鍵
表2: Address
架構
+-------------+---------+ | 列名 | 類型 | +-------------+---------+ | AddressId | int | | PersonId | int | | City | varchar | | State | varchar | +-------------+---------+ AddressId 是上表主鍵
編寫一個 SQL 查詢,知足條件:不管 person 是否有地址信息,都須要基於上述兩表提供 person 的如下信息:code
FirstName, LastName, City, State
由於表 Address 中的 personId 是表 Person 的外關鍵字,因此咱們能夠鏈接這兩個表。it
考慮到可能不是每一個人都有地址信息,咱們應該使用 outer join 而不是默認的 inner join;在MySql中,用 LEFT JOIN便可。table
若是沒有某我的的地址信息,使用 where 子句過濾記錄將失敗,由於它不會顯示姓名信息。ast
# Write your MySQL query statement below SELECT FirstName, LastName, City, State FROM Person LEFT JOIN Address ON Person.PersonId = Address.ONPersonId ;
SQL LEFT JOIN 關鍵字:class
LEFT JOIN 關鍵字從左表(table1)返回全部的行,即便右表(table2)中沒有匹配。若是右表中沒有匹配,則結果爲 NULL。語法
SQL LEFT JOIN 語法:查詢
SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
或:
SELECT column_name(s) FROM table1 LEFT OUTER JOIN table2 ON table1.column_name=table2.column_name;
註釋:LEFT JOIN 關鍵字從左表(Websites)返回全部的行,即便右表(access_log)中沒有匹配。
另外: