Mysql 在表部门中排名第二

Mysql 在表部门中排名第二,mysql,Mysql,我有一个表名为“emp”。栏目包括: uid,emp_name,emp_dept,emp_sal 现在我想找出每个部门员工的第二大薪酬。 请建议我询问。 我使用了此查询,但它没有显示所需的结果: select max(emp_sal) from emp where emp_sal<(select max(emp_sal) from emp) group by emp_dept SELECT SAL FROM EMP WHERE SAL IN SELECT MAXSAL FROM EM

我有一个表名为“emp”。栏目包括: uid,emp_name,emp_dept,emp_sal

现在我想找出每个部门员工的第二大薪酬。 请建议我询问。 我使用了此查询,但它没有显示所需的结果:

 select max(emp_sal) from emp where emp_sal<(select max(emp_sal) from emp)
 group by emp_dept

SELECT SAL FROM EMP WHERE SAL IN SELECT MAXSAL FROM EMP WHERE SAL SELECT MAXSAL FROM EMP

由于您使用的是MySql,因此可以利用limit子句中的offset参数

SELECT e.emp_dept, 
    ( SELECT p.emp_sal
      FROM emp p 
      WHERE p.emp_dept = e.emp_dept 
      ORDER BY p.emp_sal DESC 
      LIMIT 1,1) secondHighestSal
FROM emp e
GROUP BY e.emp_dept

通过使用下面的查询,我们将获得所有部门中第二高的值,而不受使用限制

SELECT a . * FROM emp AS a 
WHERE 2 = (SELECT count( a.uid )
FROM emp AS b 
WHERE a.emp_sal <= b.emp_sal AND a.emp_dept = b.emp_dept 
GROUP BY a.emp_dept )