[SQL刷题]LeetCode:175. 组合两个表

225 阅读1分钟

写在前面

题目

表1: Person

PersonId 是上表主键 表2: Address

AddressId 是上表主键

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

FirstName, LastName, City, State

思路

用outer join即可,left join或者right join都一样。

SELECT FIRSTNAME,LASTNAME,CITY,STATE
FROM PERSON P LEFT JOIN ADDRESS A ON P.PersonId=A.PersonId
SELECT FIRSTNAME,LASTNAME,CITY,STATE
FROM  ADDRESS A RIGHT JOIN PERSON P  ON P.PersonId=A.PersonId

oracle还可以这么写

SELECT FIRSTNAME,LASTNAME,CITY,STATE
FROM  ADDRESS A , PERSON P 
where P.PersonId=A.PersonId(+)

但用下面的写法的时候提示超时了,不知所以

SELECT FIRSTNAME,LASTNAME,CITY,STATE
FROM  ADDRESS A , PERSON P 
where A.PersonId(+)=P.PersonId