sql >> Database >  >> RDS >> Mysql

Haal de op één na hoogste waarde in een MySQL-tabel

Hier is er een die verantwoordelijk is voor banden.

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

BEWERKEN: Ik nam Manoj's tweede bericht, paste het aan en maakte het een beetje menselijker leesbaar. Voor mij n-1 is niet intuïtief; echter, het gebruik van de waarde die ik wil, 2=2e, 3=3e, etc. is.

/* 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


  1. KIES VOOR UPDATE met SQL Server

  2. Python uitdagende tekenreekscodering

  3. Best practices voor het werken met meerdere tabellen

  4. Meest efficiënte manier om rijen in de MySQL-database in te voegen