sql >> Database teknologi >  >> RDS >> Mysql

Få den næsthøjeste værdi i en MySQL-tabel

Her er en, der står for bånd.

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

EDIT: Jeg tog Manojs andet indlæg, tilpassede det og gjorde det lidt mere menneskeligt læsbart. Til mig n-1 er ikke intuitiv; dog ved at bruge den værdi, jeg ønsker, 2=2., 3=3. osv. er.

/* 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. Hvordan opretter man virtuel kolonne ved hjælp af MySQL SELECT?

  2. Mysql IKKE IN og EKSISTERER IKKE det samme?

  3. MySql:Vis kolonner, men ekskluder alt undtagen feltnavnene

  4. MySQL Forespørg en liste over værdier