表1:person
表2:address
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
(相關知識點持續更新~) 175 組合兩個表 leetcode
表1 person 列名 型別 personid int firstname varchar lastname varchar personid 是上表主鍵表2 address 列名 型別 addressid int personid int city varchar state varchar a...
leetcode 175 組合兩個表
答案 select a.firstname,a.lastname,b.city,b.state from person a left join address b on a.personid b.personid 分析 1 left join或left outer join 左連線 左向外聯接的結果...
LeetCode 175組合兩個表
滿足條件 無論 person 是否有位址資訊,都需要基於上述兩表提供 person 資訊。這個條件剛好滿足左連線的概念,獲取person表所有記錄,即使address表沒有對應匹配的記錄。所以直接用左連線聯合兩個表進行查詢。select firstname,lastname,city,state f...