【Leetcode Database】Combine Two Tables

4 篇文章 0 订阅
2 篇文章 0 订阅

问题:

Table: Person


+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| PersonId    | int     |
| FirstName   | varchar |
| LastName    | varchar |
+-------------+---------+
PersonId is the primary key column for this table.
Table: Address


+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| AddressId   | int     |
| PersonId    | int     |
| City        | varchar |
| State       | varchar |
+-------------+---------+
AddressId is the primary key column for this table.


Write a SQL query for a report that provides the following information for each person in the Person table, regardless if there is an address for each of those people:


FirstName, LastName, City, State


第一次提交(MySQL):


1
2
# Write your MySQL query statement below
select FirstName, LastName, City, State from Person, Address where Person.PersonId=Address.PersonId;

思想:

使用最常见的select+where语句,也即内连接的形式。将符合Person.PersonId=Address.PersonId条件的,存在于两个表的四个字段FirstName, LastName, City, State的记录,形成连接。

提交结果:

      报错。


测试用例:

Person
PersonIdFirstNameLastName
1AllenWang

Address
AddressIdPersonIdCityState
    

当Address表为空时,Address表中没有匹配的记录,这样会出现连接错误。

第二次提交(MySQL):
1
2
# Write your MySQL query statement below
select FirstName, LastName, City, State from Person LEFT JOIN Address on Person.PersonId=Address.PersonId;
思想:

通过外连接发方式实现。外联结:分为外左联结和外右联结。对于左表(右表)中没有匹配的记录时,右表(左表)中没有匹配的记录将被设置为null。


提交结果:

        通过。

本题知识点:

本题主要考察数据库的内连接与外连接。














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值