返回介绍

solution / 0100-0199 / 0175.Combine Two Tables / README

发布于 2024-06-17 01:04:03 字数 2862 浏览 0 评论 0 收藏 0

175. 组合两个表

English Version

题目描述

表: Person

+-------------+---------+
| 列名     | 类型   |
+-------------+---------+
| PersonId  | int   |
| FirstName   | varchar |
| LastName  | varchar |
+-------------+---------+
personId 是该表的主键(具有唯一值的列)。
该表包含一些人的 ID 和他们的姓和名的信息。

 

表: Address

+-------------+---------+
| 列名     | 类型  |
+-------------+---------+
| AddressId   | int   |
| PersonId  | int   |
| City    | varchar |
| State     | varchar |
+-------------+---------+
addressId 是该表的主键(具有唯一值的列)。
该表的每一行都包含一个 ID = PersonId 的人的城市和州的信息。

 

编写解决方案,报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为 null 。

任意顺序 返回结果表。

结果格式如下所示。

 

示例 1:

输入: 
Person表:
+----------+----------+-----------+
| personId | lastName | firstName |
+----------+----------+-----------+
| 1    | Wang   | Allen   |
| 2    | Alice  | Bob     |
+----------+----------+-----------+
Address表:
+-----------+----------+---------------+------------+
| addressId | personId | city      | state    |
+-----------+----------+---------------+------------+
| 1     | 2    | New York City | New York   |
| 2     | 3    | Leetcode    | California |
+-----------+----------+---------------+------------+
输出: 
+-----------+----------+---------------+----------+
| firstName | lastName | city      | state  |
+-----------+----------+---------------+----------+
| Allen   | Wang   | Null      | Null   |
| Bob     | Alice  | New York City | New York |
+-----------+----------+---------------+----------+
解释: 
地址表中没有 personId = 1 的地址,所以它们的城市和州返回 null。
addressId = 1 包含了 personId = 2 的地址信息。

解法

方法一:左连接

我们可以使用左连接,将 Person 表左连接 Address 表,连接条件为 Person.personId = Address.personId,这样就可以得到每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为空 null

import pandas as pd


def combine_two_tables(person: pd.DataFrame, address: pd.DataFrame) -> pd.DataFrame:
  return pd.merge(left=person, right=address, how="left", on="personId")[
    ["firstName", "lastName", "city", "state"]
  ]
# Write your MySQL query statement below
SELECT firstName, lastName, city, state
FROM
  Person
  LEFT JOIN Address USING (personId);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文