sql >> Databasteknik >  >> RDS >> Mysql

Få det näst högsta värdet i en MySQL-tabell

Här är en som står för slips.

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: Jag tog Manojs andra inlägg, finjusterade det och gjorde det lite mer mänskligt läsbart. Till mig n-1 är inte intuitiv; men att använda värdet jag vill ha, 2=2:a, 3=3:a, etc. är.

/* 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. Hur fixar man vanliga problem med MySQL-databasen?

  2. Vad är SQL Injection?

  3. Hur man ansluter till SQL Server Default Instance och SQL Server Named Instances - SQL Server / TSQL självstudie del 2

  4. SQLiteException:Okänd token vid läsning från databasen