Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir la deuxième valeur la plus élevée dans une table MySQL

En voici un qui tient compte des égalités.

Name    Salary
Jim       6
Foo       5
Bar       5
Steve     4

SELECT name, salary
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees))

Result --> Bar 5, Foo 5

MODIF : J'ai pris le deuxième message de Manoj, l'ai peaufiné et l'ai rendu un peu plus lisible par l'homme. À moi n-1 n'est pas intuitif ; cependant, en utilisant la valeur que je veux, 2 =2e, 3 =3e, etc. est.

/* looking for 2nd highest salary -- notice the '=2' */
SELECT name,salary FROM employees
WHERE salary = (SELECT DISTINCT(salary) FROM employees as e1
WHERE (SELECT COUNT(DISTINCT(salary))=2 FROM employees as e2
WHERE e1.salary <= e2.salary)) ORDER BY name

Result --> Bar 5, Foo 5