1.表: Person ±------------±--------+ | 列名 | 类型 | ±------------±--------+ | PersonId | int | | FirstName | varchar | | LastName | varchar | ±------------±--------+ personId是该表的主键列。该表包含一些人的ID和他们的姓和名的信息。 表: Address ±------------±--------+ | 列名 | 类型 | ±------------±--------+ | AddressId | int | | PersonId | int | | City | varchar | | State | varchar | ±------------±--------+ addressId是该表的主键列。该表的每一行都包含一个ID = PersonId的人的城市和州的信息。 编写一个SQL查询来报告 Person 表中每个人的姓、名、城市和状态。如果 personId 的地址不在 Address 表中,则报告为空 null 。 以 任意顺序 返回结果表。
首先我想到了使用where进行查询,但发现where只能查询到共有的数据,就是说不在 Address 表中 中的personId的数据直接不显示而不是为 null,这里要使用的是外连接。本质上是我对几个join连接不太熟。需要补一下这块的知识。
连接查询包括:
- 交叉查询:
交叉连接不带WHERE子句,交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
SELECT * FROM 表1 CROSS JOIN 表2;
简化写法:SELECT * FROM 表1,表2;
|