郑州设计师网站,经典软文案例或软文案例,企业策划公关公司,淘宝上新推荐MySQL练习 组合两表考点梳理题目简介解题思路代码考点梳理
left / right join on 语法与where的使用区别:首先,(以left join on为例)left join on 语法在建立临时列表时,
是先建立临时列表再进行on之后的条件判定。如…
MySQL练习 组合两表
考点梳理
题目简介
解题思路
代码
考点梳理
left / right join on 语法与where的使用区别:首先,(以left join on为例)left join on 语法在建立临时列表时,
是先建立临时列表再进行on之后的条件判定。如:
表名:Information
ID
Name
Sex
Address
TLE
1
xi
man
beijin
010-111111
2
ha
woman
nanjin
010-22222
3
he
man
xian
010-3333
表名:BookBorrow
ID
BookID
BookName
Time
2
001
《哈姆雷特》
2020.01.20
4
002
《复活》
2020.01.22
6
004
《来日可期》
2020.01.22
7
003
《北极星的仰望》
2020.01.23
(以 left join on 为例)执行当前代码:
select*from information a leftjoin BookBorrow b
on a.ID = b.ID
建立临时列表如下(部分展示):
ID
Name
Sex
Address
TLE
ID
BookID
BookName
Time
1
xi
man
Beijin
010-111111
1
null
null
null
2
ha
woman
nanjin
010-22222
2
001
《哈姆雷特》
2020.01.20
..
..
..
..
..
..
..
..
..
虽然此时 xi 这位读者没有借书,但是当查询每位读者的借书情况时,也需要将没有借书
的人的借书情况展示出来,或者查询其个人信息。所以使用left join on 或者right join on 能实现对该类问题的建立,而当on后的条件不匹配时,右表都为null。where的作用::
执行如下代码:
select*from Information as a ,BookBorrow as b
where a.ID = b.ID
输出结果:
ID
Name
Sex
Address
TLE
BookID
BookName
Time
2
ha
woman
nanjin
010-22222
001
《哈姆雷特》
2020.01.20
从查询结果看出,where 不能查询出没有借阅记录的结果,但是当查询一个人是否具有借
阅记录时,就需要多步操作才能得到需要的结果,相比如此的操作,更能节约执行时间。
当我们使用 left join 来寻找在一些表中不存在的记录,则我们需要做下面的测试:
where 部分的 xxx IS NULL,便可得到。
题目简介
表1: Person+-------------+---------+
| 列名 | 类型 |
+-------------+---------+
| 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力扣题源链接:[https://leetcode-cn.com/problems/combine-two-tables]
解题思路
(首先,在开始思考这道题时,理解错误,题目中要求无论Address表是否存在,在组合两个
表的时候都需要得出{“小明”,“111”,null或者“xx”,null或者“vv” }的输出结果,所以这里使用
where语法无法实现对不存在address表时,组合两表的操作,因此只能使用left join on 的语
法进行合并两个表,从而筛选出符合要求的表内容)
代码
select A.FirstName, A.LastName, B.City, B.State
from Person as A leftjoin Address as B
on A.PersonId = B.PersonID