SQL 175. 组合两个表
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