SQL - 找到最大值,然后找到对应的列

SQL - Find max value and then corresponding column


SQL 查询:3 列 table,搜索 "John" 的最大值,仅返回城市。
数据:
Name | City | Value <br>
John | LDN | 50 <br>
Joey | MCR | 12<br>
Dave | BHM | 5<br>
John | NTH | 56 <br>

期望的结果:第 NTH(第 4 行)

我怎样才能做到这一点?提前致谢。

您可以使用row_number()

select city from
(
select *, row_number() over(partition by name order by value desc) as rn
from tablename
)A where rn=1 and name='John'

或者,

select city from tablename t 
where name='John' and value = (select max(value) from tablename t1 where t.name=t1.name)

您可以使用 order by 和一些限制结果的方法:

select t.*
from t
order by value desc
fetch first 1 row only;

有些数据库使用 select top (1)limit 1 来限制为单行。