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)中没有匹配。
另外: