1. 程式人生 > 其它 >【leetcode資料庫】175.組合兩個表

【leetcode資料庫】175.組合兩個表

技術標籤:資料庫sql資料庫

表1:Person

表2:Address

編寫一個 SQL 查詢,滿足條件:無論 person 是否有地址資訊,都需要基於上述兩表提供person 的以下資訊:

FirstName, LastName, City, State

根據條件無論person是否有地址資訊都要提供關於person的Firstname,Lastname,City以及State的資訊,可以判斷是將Person表與Address表進行連線,並且是左連線,每個person對應一個記錄。

SELECT
    FirstName,LastName,City,State
FROM
    Person left join Address on Person.PersonId=Address.PersonId;

相關知識點複習:

1、多表連線基本格式:

 連線兩個資料表的用法:
 FROM Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort
 語法格式可以概括為:
 FROM 表1 INNER JOIN 表2 ON 表1.欄位號=表2.欄位號

 連線三個資料表的用法:
 FROM (Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSort) INNER JOIN 
 MemberLevel ON Member.MemberLevel=MemberLevel.MemberLevel
 語法格式可以概括為:
 FROM (表1 INNER JOIN 表2 ON 表1.欄位號=表2.欄位號) INNER JOIN 表3 ON 表1.欄位號=表3.欄位號
2、連線的幾種方式(以兩個表連線為例)

2.1 內連線:兩個表的交集,可以有效的去除笛卡爾集現象
join 或 inner join (也就是inner可以省略)
內連線查詢分為兩類:
(1)隱式內連線
select * from A,B where 條件;
select * from A 別名1,B 別名2 where 別名1.xx=別名2.xx;
(2)顯示內連線
select * from A inner join B on 條件;
select * from A 別名1 inner join B 別名2 on 別名1.xx=別名2.xx;

2.2 外連線

(1)左連線:左邊表加兩表交集
left join 或 left outer join
select * from student left join score on student.Num=score.Stu_id;
(2)右連線:右邊表加兩表交集
right join 或 right outer join
select * from student right join score on student.Num=score.Stu_id;
(3)完全外連線  full join 或 full outer join
select * from student full join score on student.Num=score.Stu_id;
通過上面這三種方法就可以把不同的表連線到一起,變成一張大表,之後的查詢操作就簡單一些了。

2.3 交叉連線:兩個表的乘積(笛卡兒集),儘量不使用此語句,產生的結果過於繁瑣.
select * from a,b

(相關知識點持續更新~)

題目來源:LeetCode

參考文獻:

https://blog.csdn.net/qq_26593881/article/details/52104699

https://blog.csdn.net/zgscwxd/article/details/97611098?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control