sql架構
表1:person
+
-------------+---------+
| 列名 | 型別 |
+-------------+---------+
| personid |
int|
| firstname |
varchar
|| lastname |
varchar|+
-------------+---------+
personid 是上表主鍵
表2:address
+
-------------+---------+
| 列名 | 型別 |
+-------------+---------+
| addressid |
int|
| personid |
int|
| city |
varchar
|| state |
varchar|+
-------------+---------+
addressid 是上表主鍵
firstname, lastname, city, state
因為表 address 中的 personid 是表 person 的外關鍵字,所以我們可以連線這兩個表。
考慮到可能不是每個人都有位址資訊,我們應該使用 outer join 而不是預設的 inner join;在mysql中,用 left join即可。
如果沒有某個人的位址資訊,使用 where 子句過濾記錄將失敗,因為它不會顯示姓名資訊。
# write your mysql query statement below
select
firstname, lastname, city, state
from
person
left join
address
on person.personid = address.onpersonid
;
sql left join 關鍵字:
left join 關鍵字從左表(table1)返回所有的行,即使右表(table2)中沒有匹配。如果右表中沒有匹配,則結果為 null。
sql left join 語法:
select column_name(s)
from table1
left
join table2
on table1.column_name=table2.column_name;
或:
select column_name(s)
from table1
left
outer
join table2
on table1.column_name=table2.column_name;
注釋:left join 關鍵字從左表(websites)返回所有的行,即使右表(access_log)中沒有匹配。
另外:
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...
LeetCode 175 組合兩個表
題目 表1 person 列名 型別 personid int firstname varchar lastname varchar personid 是上表主鍵 表2 address 列名 型別 addressid int personid int city varchar state varch...