Mysql 在表部门中排名第二
我有一个表名为“emp”。栏目包括: uid,emp_name,emp_dept,emp_sal 现在我想找出每个部门员工的第二大薪酬。 请建议我询问。 我使用了此查询,但它没有显示所需的结果: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
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 )