sql >> Databáze >  >> RDS >> Mysql

Získejte druhou nejvyšší hodnotu v tabulce MySQL

Zde je jeden, který odpovídá za remízy.

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

UPRAVIT: Vzal jsem Manojův druhý příspěvek, upravil jsem ho a udělal trochu lidštější čitelnost. Pro mě n-1 není intuitivní; nicméně použití hodnoty, kterou chci, 2=2nd, 3=3rd atd. je.

/* 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. aktualizace mysql pomocí regexp

  2. Pokročilé připojení k MySQL. Zrychlení dotazu

  3. Zkontrolujte, zda existuje databáze mysql, proveďte akci na základě výsledku

  4. Jak NOT REGEXP funguje v MySQL