SQL 题目地址 : https://leetcode.cn/problems/combine-two-tables/
准备数据
CREATE TABLE `Person` (
`PersonId` int(11) NOT NULL,
`FirstName` varchar(16) NOT NULL,
`LastName` varchar(16) NOT NULL,
PRIMARY KEY (`PersonId`)
) ENGINE=InnoDB;
CREATE TABLE `Address` (
`AddressId` int(11) NOT NULL,
`PersonId` int(16) NOT NULL,
`City` varchar(16) NOT NULL,
`State` varchar(16) NOT NULL,
PRIMARY KEY (`AddressId`)
) ENGINE=InnoDB;
需求
查询 Person 表的 FirstName, LastName, City, State
- 当 personId 的地址不在 Address 表中,就返回 null
解决
当 personId 的地址不在 Address 表中,就返回 null: , 说明:
- 以 Person 为主表
- Address 信息可以为空
典型的 left join 解决思路
- 通过 PersonId 进行关联
- Address 的 PersonId 没有索引 ,Join 性能会较低
select t1.FirstName,
t1.LastName,
t2.City,
t2.State
from Person t1 left join Address t2
on t1.PersonId = t2.PersonId