這個是乙個資料庫的題,**於力扣題目:
表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表進行連線,並且是左連線,...