【leetcode資料庫】175.組合兩個表
阿新 • • 發佈:2021-01-11
表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
參考文獻: