create table Employee(
Id number(10) primary key,
Name varchar(10) not null,
Salary number(10),
ManagerId number(10)
)
insert into Employee values (1,'jon',70000,3);
insert into Employee values (2,'Henry',80000,4);
insert into Employee values (3,'Sam',60000,null);
insert into Employee values (4,'Max',90000,null);
commit
Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。
给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。
select a.Name as Employee from Employee a , Employee b where a.ManagerId = b.id and a.salary>b.salary
测试下左连接,右连接和内连接的区别
左连接
select * from Employee a left join Employee b on a.ManagerId = b.id
右连接
select * from Employee a right join Employee b on a.ManagerId = b.id
内连接 使用 , 分隔两个表和inner join 是一个效果
select * from Employee a inner join Employee b on a.ManagerId = b.id
select * from Employee a , Employee b where a.ManagerId = b.id
这两条语句是等价的