SQL 在考虑重复项时使用限制进行查询

SQL query using limit while considering duplicates

我正在使用查询从 table 中获取前 3 条记录,使用限制如下:

select name, salary 
from employees 
order by salary desc
limit 3;

问题是可能会有薪水相同的员工,在那种情况下我不希望我的限制是 3

----------------------------
|    name    |    salary   |
----------------------------
|   Robert   |    10000    |
|     Jon    |    20000    |
| Alexander  |    30000    |
|    James   |    20000    |
|    Mike    |    40000    |
----------------------------

所以在这个例子中,我希望限制为 4,因为有两名员工的薪水为 20000。有没有办法在事先不知道会有多少人的情况下考虑重复?

您需要先确定要包含的薪资范围。

select name, salary 
  from employees 
 where salary in ( select distinct salary 
                from employees
                order by salary desc
                limit 3 )
 order by salary DESC ;