LeetCode175 組合兩個表

2021-10-12 01:45:44 字數 1706 閱讀 2654

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...