思路: 从高到低,取出薪资的前3名,再在这3名中取最小值。 SQL语句如下: SELECT E.EmpName, S.Salary, D.DepartName --取雇员名字,薪资数,部门名 FROM t_Employee AS E, t_Salary AS S, t_Department AS D WHERE S.EmpID=E.EmpID AND S.DepartID=D.DepartID AND S.EmpID in( SELECT S.EmpID FROM t_Salary S WHERE S.Salary in( SELECTmin(S.Salary) FROM t_Salary S --在取出的前3名中取最小值 WHERE S.Salary in( SELECTTOP3 S.Salary FROM t_Salary S ORDERBY S.Salary DESC--从高到低取薪资前3名 ) ) ) AND S.DepartID in( SELECT S.DepartID FROM t_Salary S WHERE S.Salary in( SELECTmin(S.Salary) FROM t_Salary S WHERE S.Salary in( SELECTTOP3 S.Salary FROM t_Salary S ORDERBY S.Salary DESC ) ) );