天天看點

leftjoin多表聯合查詢_leetcode題庫-sql練習精講系列--五、主鍵不相同的多表聯合查詢

這是一個系列文章,這個系列的理念是

通過一道題,搞懂一類題

。涵蓋了

SQL面試最常考的知識點

。搞懂這些題,

面試時工作中sql不可能有問題。

文章分為引入問題-完整解析-答案-leetcode題和答案-知識點拓展-BAT等大廠面試真題幾個部分。

希望能幫你全方位的弄懂。有問題可以留言,碼字不易,寫一篇要好幾個小時,希望能得到點贊收藏哦。

一、問題-對應leetcode 181.超過經理收入的員工

現有一張表,裡面包含學生編号,成績,課代表編号。課代表編号表示這門課程的課代表的學生編号,如果某同學是課代表,則他的課代表編号就是null。

現在要求找出課程成績大于課代表成績的同學的學生編号和成績。

二、準備

三、解答

[解題思路]

要求找出課程成績大于課代表成績的所有同學的學生編号和成績。

我們可以使用自連接配接兩張表。

課代表編号代表作為課代表的某位同學的編号,它是某位同學的學生編号。是以a.學生編号=b.課代表編号

另外還需要判斷不是課代表的同學的成績需要大于課代表的成績。是以a.成績 > b.成績

[代碼]

[本題答案]

[leetcode題庫問題-181.超過經理收入的員工 ]

Employee

表包含所有員工,他們的經理也屬于員工。每個員工都有一個 Id,此外還有一列對應員工的經理的 Id。

給定

Employee

表,編寫一個 SQL 查詢,該查詢可以擷取收入超過他們經理的員工的姓名。在上面的表格中,Joe 是唯一一個收入超過他的經理的員工。

[參考答案]