SQL查詢--關於查詢的練習題

下面的練習題出自LeetCode:https://leetcode-cn.com/problemset/database/,有興趣的能夠去上面刷刷題sql

 

練習題1:超過經理收入的員工spa

 

 分析:code

使用sql自鏈接查詢,由於員工Id和經理的ManagerId都在同一個表,使用自鏈接,能夠把一張表看做2張表來使用,一張爲員工表ygb,一張爲經理表jlb;blog

查詢思路就是:篩選出員工表的ManagerId與經理表的Id相等的記錄,而後在這些記錄中篩選員工表的Salary大於經理表的Salary的記錄leetcode

SELECT *  FROM employee ygb,employee jlb WHERE ygb.ManagerId = jlb.Id 

SELECT *  FROM employee ygb,employee jlb WHERE ygb.ManagerId = jlb.Id AND ygb.Salary>jlb.Salary

SELECT ygb.name AS Employee FROM employee ygb,employee jlb WHERE ygb.ManagerId = jlb.Id AND ygb.Salary>jlb.Salary

 

練習題2:刪除重複的電子郵箱get

分析:
先使用自鏈接查詢,用自身表和本身比較,來判斷哪些重複郵箱class

SELECT * FROM Person p1, Person p2

這樣獲得一個2個相同表的笛卡爾積,即兩張表的組合結果im

 能夠分別查詢p1.*和p2.*d3

 接着查重數據

SELECT p1.* FROM Person p1, Person p2 WHERE p1.Email = p2.Email AND p1.Id>p2.Id

而後刪除重複數據便可

DELETE p1.* FROM Person p1, Person p2 WHERE p1.Email = p2.Email AND p1.Id>p2.Id

 


2019-09-04 22:47:00

相關文章
相關標籤/搜索