【leetcode数据库】175.组合两个表

表1: Person

表2: Address

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:

FirstName, LastName, City, State

根据条件无论person是否有地址信息都要提供关于person的Firstname,Lastname,City以及State的信息,可以判断是将Person表与Address表进行连接,并且是左连接,每个person对应一个记录。

SELECT
    FirstName,LastName,City,State
FROM
    Person left join Address on Person.PersonId=Address.PersonId;

相关知识点复习:

1、多表连接基本格式:

 连接两个数据表的用法:
 FROM Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort
 语法格式可以概括为:
 FROM 表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号

 连接三个数据表的用法:
 FROM (Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN 
 MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel
 语法格式可以概括为:
 FROM (表1 INNER JOIN 表2 ON 表1.字段号=表2.字段号) INNER JOIN 表3 ON 表1.字段号=表3.字段号
2、连接的几种方式(以两个表连接为例)

2.1 内连接:两个表的交集,可以有效的去除笛卡尔集现象
join 或 inner join (也就是inner可以省略)
内连接查询分为两类:
(1)隐式内连接
select * from A,B where 条件;
select * from A 别名1,B 别名2 where 别名1.xx=别名2.xx;
(2)显示内连接
select * from A inner join B on 条件;
select * from A 别名1 inner join B 别名2 on 别名1.xx=别名2.xx;

2.2 外连接

(1)左连接:左边表加两表交集
left join 或 left outer join
select * from student left join score on student.Num=score.Stu_id;
(2)右连接:右边表加两表交集
right join 或 right outer join
select * from student right join score on student.Num=score.Stu_id;
(3)完全外连接  full join 或 full outer join
select * from student full join score on student.Num=score.Stu_id;
通过上面这三种方法就可以把不同的表连接到一起,变成一张大表,之后的查询操作就简单一些了。

2.3 交叉连接:两个表的乘积(笛卡儿集),尽量不使用此语句,产生的结果过于繁琐.
select * from a,b

(相关知识点持续更新~)

题目来源:LeetCode

参考文献:

https://blog.csdn.net/qq_26593881/article/details/52104699

https://blog.csdn.net/zgscwxd/article/details/97611098?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值