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

猜你喜欢

转载自blog.csdn.net/qq_44226094/article/details/129996251