2016-03-01 62 views
0

如何在mysql中找到第二高薪水。 所有記錄找到第二高的工資。如何在mysql中找到第二高薪水

Table : Employee 
ID salary  emp_name 
1  400   A 
2  800   B 
3  300   C 
4  400   D 
4  400   C 

*** Mysql Query: *** 
SELECT * FROM employee ORDER by salary DESC LIMIT 1,2 

這返回兩條記錄。我不知道有多少記錄在第二高的薪水。

+1

可能重複[查找員工表MySQL的最大和第二最高工資](http://stackoverflow.com/questions/21520038/find-max-and-second-max-salary-for-a-employee- table-mysql)...請在發佈這樣的問題之前搜索Stack Overflow。 –

+0

這不是建議,但一個快速破解你發佈的查詢我們改變LIMIT 1,1 - >限制作品像這第一個參數是從哪裏開始,第二個參數是從那裏返回多少。 –

回答

3

試試這個:

SELECT emp_name,salary 
FROM Employee 
WHERE salary = (SELECT DISTINCT salary FROM Employee as emp1 
       WHERE (SELECT COUNT(DISTINCT salary)=2 FROM Employee as emp2 
       WHERE emp1.salary <= emp2.salary)) 
ORDER BY emp_name 
+1

其工作正常 –

+1

DISTINCT不是函數。你有希望在89k時,你可能知道這一點;-) – Strawberry

+0

@Strawberry: - 謝謝指出它。按照此處所述刪除括號 –

1

一日一與LIMIT-

SELECT SALARY FROM tbl_name ORDER BY SALARY DESC LIMIT 1,1 

第二屆一個沒有LIMIT-

SELECT MAX(SALARY) FROM tbl_name WHERE SALARY < (SELECT MAX(SALARY) FROM tbl_name) 
2

SELECT SAL FROM EMP ORDER BY sal DESC LIMIT 1,1;

您將只獲得第二個最高工資。

如果您需要任何第3或第4或第N個值,您可以增加第一個值,然後是LIMIT(n-1),即。第四個工資:限制3,1;

+0

:https://dev.mysql.com/doc/refman/5.7/en/select.html –