180.连续出现的数字
表Logs结果表
方法一:
select Num ConsecutiveNums from Logs l1,
left join Logs l2 on l1.Id = l2.Id-1
left join Logs l3 on l1.Id = l3.Id-2
where l1.Num = l2.Num and l2.Num = l3.Num
分析:该方法首先使用left join将表连接起来,再使用where查找满足条件的行。
方法二:
select Num ConsecutiveNums
from Logs l1,Logs l2,Logs l3
where l1.Num = l2.Num and l2.Num = l3.Num and l1.Id = l2.Id-1 and l2.Id = l3.Id-1
分析:该方法直接使用了where条件查找
181.超过经历收入的员工
表Employee给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。
结果表
方法一:
select Name Employee
from Employee
where e1.Salary>(select e2.Salary from Employee e2 where e1.ManagerId = e2.Id)
分析:取满足e1.ManagerId = e2.Id的行的Salary,并与e1表进行比较。
方二:
select e1.Name Employee
from Employee e1 join Employee e2
on e1.ManagerId = e2.Id and e1.Salary>e2.Salary
分析:利用join取交集的方式对满足条件的行进行查找。
方法三:
select e1.Name Employee
from Employee e1, Employee e2
where e1.ManagerId = e2.Id and e1.Salary>e2.Salary
分析:直接利用where判断出满足条件的行。
网友评论