表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
答案:
SELECT p.FirstName AS FirstName, p.LastName AS LastName, a.City AS City, a.State AS State FROM Person p LEFT JOIN Address a ON p.PersonId = a.PersonId;
注意:left join 与 from tables...之前的区别
left join : 左表为主表,在右表没有对应数据的情况下(右表没有对应personId=1的记录),仍可查询出数据;
from tables : 相当于inner join ,在两张表都有对应的数据的情况下(只有右表存在对应personId=1的记录的情况下),才会有结果记录输出;
浙公网安备 33010602011771号