如何显示具有 MAX(value) 的行或行?

How to display row or rows having MAX(value)?

我正在尝试显示具有最高薪水的一行或多行,我尝试了以下操作。我想至少显示姓名和最高薪水,但我做不到。

我尝试执行此代码片段,但它显示的是第一行,而不是显示薪水最高的那一行。

select * from instructor
having max(salary);

我也试过了

select name, max(salary) from instructor;

但这返回了第一行的姓名和整列的最高薪水值。

如果您是 运行 Oracle,我会推荐一个 fetch 子句:

select *
from instructor
order by salary desc
fetch first row with ties

另一种方法是使用相关子查询(这在 Oracle 和 MySQL 的任何版本中都受支持):

select *
from instructor
where salary = (select max(salary) from instructor)

或者,您可以使用 window 函数(这需要 MySQL 8.0)

select *
from (select i.*, rank() over(order by salary desc) rn from instructor) i
where rn = 1