摘要:数据库会以左边为基础,与右边表做笛卡尔乘积。或左连接左向外联接的结果集包括子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。将返回右表的所有行。如果表之间有匹配行,则整个结果集行包含基表的数据值。
题目
表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题解
由于FirstName, LastName, City, State 来自两个不同的 table, 所以要用join。由于要求必须显示人名,即使没有地址相关信息,说明要用LEFT JOIN。左连接即是将左边表中的数据全部查找出来。数据库会以左边为基础,与右边表做笛卡尔乘积。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
select FirstName, LastName, City, State from Person left join Address on Person.PersonId=Address.PersonIdLEFT JOIN或LEFT OUTER JOIN 左连接
左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
RIGHT JOIN 或 RIGHT OUTER JOIN 右链接右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
FULL JOIN 或 FULL OUTER JOIN 全联接完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
热门阅读服务端开发95th 99th 是什么意思?
【缓存】缓存穿透、缓存雪崩、缓存击穿
学习资料推荐
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71880.html
摘要:数据库会以左边为基础,与右边表做笛卡尔乘积。或左连接左向外联接的结果集包括子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。将返回右表的所有行。如果表之间有匹配行,则整个结果集行包含基表的数据值。 题目 表1: Person +-------------+---------+ | 列名 | 类型 | +-------------+---------+ | P...
摘要:题目链接题目分析这个题目比较简单,就是简单的连表查询。思路以表为出发点,于表。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D91 175. Combine Two Tables 题目链接 175. Combine Two Tables 题目分析 这个题目比较简单,就是简单的连表查询。 思路 以person表为出发点,于address表join。join依据是personId。 最...
阅读 2265·2021-10-09 09:41
阅读 1728·2019-08-30 15:53
阅读 966·2019-08-30 15:52
阅读 3414·2019-08-30 11:26
阅读 744·2019-08-29 16:09
阅读 3380·2019-08-29 13:25
阅读 2217·2019-08-26 16:45
阅读 1908·2019-08-26 11:51