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

相关文章
相关标签/搜索