mysql使⽤leftjoin联⽴两张表
题⽬来源:
⼒扣的数据库算法题,原题链接:
题⽬描述:
表1: Person
±------------±--------+
| 列名 | 类型 |
sql left join 多表连接±------------±--------+
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
±------------±--------+
PersonId 是上表主键
表2: Address
±------------±--------+
| 列名 | 类型 |
±------------±--------+
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
±------------±--------+
AddressId 是上表主键
问:编写⼀个 SQL 查询,满⾜条件:⽆论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:
FirstName, LastName, City, State
分析:
由题⽬可以看出来,⾸先是需要两张表关联查询的,其次就是哪怕person表中的personid在地址表中没有,也需要显⽰四个字段。只有left join符合这个条件。
left join就是左连接,它是指哪怕在联⽴的右表中没有相对应的数据,它也会完整的显⽰所有的查询字段,没有查询到的字段数据就使⽤null来表⽰。
由此可以反推right join ,在相对情况下,跟left join的使⽤情况相反。
inner join则是如果两个表有⼀个没有数据,则完全不显⽰,某种情况下相当于where条件
答案:
/
/写得有点随意,应引以为戒
select p.firstname,p.lastname,a.city,a.state from person p left join address a on p.personid=a.personid

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。