Как использовать множественный порядок в SQL-запросе с ключевым словом limit? - PullRequest
0 голосов
/ 29 сентября 2018

Я хочу получить n-ю наивысшую зарплату в таблице, сначала ограничив набор результатов сначала n-максимальными зарплатами, а затем сторнировав набор результатов и ограничив его значением 1.

Я использовал этот запрос, который приводит кв ошибку: -

select *
  from salaries
 where emp_no=(select * from salaries order by salary desc limit 2) order by salary asc limit 1;    

В сообщении об ошибке указывается, что подзапрос возвращает более одной строки.

Ответы [ 3 ]

0 голосов
/ 29 сентября 2018

Если вы хотите получить второе по величине значение, вы можете использовать:

SELECT *
FROM salaries
ORDER BY salary DESC
LIMIT 1,1;

db <> fiddle demo

0 голосов
/ 29 сентября 2018
select * from salaries 
order by salary 
desc limit 1 offset 4;

https://www.db -fiddle.com / f / 2itHSFs2enyNpJ3MK6Nxcz / 0

0 голосов
/ 29 сентября 2018

Вот один из способов:

SELECT s.* FROM 
(SELECT * FROM `salaries` ORDER BY salary DESC LIMIT 2) s
 ORDER BY s.salary ASC LIMIT 1;

Никогда не использовать SELECT *, см. http://www.parseerror.com/blog/select-*-is-evil

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...