welcome to Qijie's Blog 薛其杰
-- 示例数据
Select * From Employee
Select * From Department

-- 返回工资最高的员工的信息
Select * From Employee where Salary in (Select MAX(Salary) from Employee)

-- 返回员工表中最高工资
Select Max(Salary) from Employee

-- 从员工表中返回第二高的工资
Select Max(Salary) from Employee where Salary not in(Select Max(Salary) from Employee)

-- 按照员工Id的区间获取相应员工信息
Select * from Employee where Id between 1 and 3

-- 返回工资最高员工的信息以及他所在的部门名称
Select e.Salary, e.Name, d.Name from Employee as e inner join Department as d on e.Dept_Id=d.Id where e.Salary in (Select MAX(Salary) from Employee)

-- 返回每一个部门中的工资最高的员工信息
Select e.Salary, e.Name, d.Name from Employee as e inner join Department as d on e.Dept_Id=d.Id 
where e.Salary in (Select MAX(Salary) from Employee group by Dept_Id)

注意:最后的一个Select语句中使用到了group by, group by经常和Aggregate函数一起使用,用来按分组统计MAX(), Min(), AVG(),等等。

 

示例数据

返回工资最高的员工的信息

返回员工表中最高工资

 

从员工表中返回第二高的工资

 

按照员工Id的区间获取相应员工信息

 

返回工资最高员工的信息以及他所在的部门名称

 


以上代码使用到了inner join,除了inner join外,还有outer join, left join, right join,他们的区别是:
  • inner join - 返回2个表中共同有关联的部分
  • outer join - 返回2个表中所有的信息,有关联的部分合在一起
  • left join - 返回左表中所有的信息,以及右表中与左表有关联的部分
  • right join - 返回右表中所有信息,以及左表中与右表有关联的部分
是不是看晕了,看这个图就明白了:

 


返回每一个部门中的工资最高的员工信息

 

posted on 2019-05-22 17:13  零点零一  阅读(1033)  评论(0编辑  收藏  举报