Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uzyskaj drugą najwyższą wartość w tabeli MySQL

Oto jeden, który wyjaśnia remisy.

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

EDYTUJ: Wziąłem drugi post Manoja, poprawiłem go i sprawiłem, że był trochę bardziej czytelny dla ludzi. Dla mnie n-1 nie jest intuicyjny; jednak użycie wartości, którą chcę, 2=2nd, 3=3rd, itd. to.

/* 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolumna zmiany nazwy MySQL

  2. Sprawdzanie wielu kolumn dla jednej wartości

  3. Grails:błąd w składni SQL przy zmianie dialektu hibernacji

  4. nie można upuścić klucza obcego

  5. Aplikacja Xamarin dla systemu Android z internetową bazą danych MySql/Sql