下面的練習題出自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