-- 示例数据 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 - 返回右表中所有信息,以及左表中与右表有关联的部分
是不是看晕了,看这个图就明白了:
返回每一个部门中的工资最高的员工信息