資料庫組合兩個表 MySQ

2021-10-01 07:39:07 字數 1464 閱讀 7270

這個是乙個資料庫的題,**於力扣

題目:

表1: person

+-------------+---------+

| 列名 | 型別 |

+-------------+---------+

| personid | int |

| firstname | varchar |

| lastname | varchar |

+-------------+---------+

personid是上表主鍵

表2: address

+-------------+---------+

| 列名 | 型別 |

+-------------+---------+

| addressid | int |

| personid | int |

| city | varchar |

| state | varchar |

+-------------+---------+

addressid是上表主鍵

firstname, lastname, city, state
題解:

這題考的是連線查詢中的外連線,題目中規定了無論person是否有位址資訊,都要其位址資訊。這是解題的關鍵,這提醒我們需要使用連線查詢中的letf join查詢。在力扣中提交**的時候,力扣輸入的資料中有些是沒有位址資訊的,如果我們用內連線是無法達到題目要求,也就提交不成功。

關於連線查詢可以參考這篇部落格[連線查詢]。

sql**

select p.firstname, p.lastname, a.city, a.state 

from person p

left

join address a

on

person.personid=address.personid;

select a.firstname, a.lastname, b.city, b.state

from person a

left

join

(select

distinct personid, city, state from address) b

on a.personid=b.personid;

至於他是將address中的addressid去掉減少的時間,還是用distinct去重而減少的時間這個我還真沒看懂。

力扣資料庫之組合兩個表

表1 person 列名 型別 personid int firstname varchar lastname varchar personid 是上表主鍵 表2 address 列名 型別 addressid int personid int city varchar state varchar ...

組合兩個表

表1 person 列名 型別 personid int firstname varchar lastname varchar personid 是上表主鍵 表2 address 列名 型別 addressid int personid int city varchar state varchar ...

leetcode資料庫 175 組合兩個表

表1 person 表2 address firstname,lastname,city,state根據條件無論person是否有位址資訊都要提供關於person的firstname,lastname,city以及state的資訊,可以判斷是將person表與address表進行連線,並且是左連線,...