> 文章列表 > SQL 175. 组合两个表

SQL 175. 组合两个表

SQL 175. 组合两个表

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