如何显示具有 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
我正在尝试显示具有最高薪水的一行或多行,我尝试了以下操作。我想至少显示姓名和最高薪水,但我做不到。
我尝试执行此代码片段,但它显示的是第一行,而不是显示薪水最高的那一行。
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