Sql 坚持选择最大行

Sql 坚持选择最大行,sql,group-by,max,Sql,Group By,Max,我有一个包含列的表: ID | FULLNAME | VALUE 01 Joseph 10 02 Sam 50 ... ... ... 我需要选择具有最大值的行,并显示如下信息 FULLNAME | VALUE 我尝试使用组函数MAX(),但我无法选择全名,因为如果我将其用作groupby表达式,它将在组中选择MAX 另一种方法是使用和语句,按值desc排序表,使用 rank() OVER (PARTITION BY ID) AS max_id

我有一个包含列的表:

ID | FULLNAME | VALUE
01   Joseph     10
02   Sam        50
...  ...       ... 
我需要选择具有最大值的行,并显示如下信息

FULLNAME | VALUE 
我尝试使用组函数
MAX()
,但我无法选择全名,因为如果我将其用作
groupby
表达式,它将在组中选择MAX

另一种方法是使用
语句,按值desc排序表,使用

rank() OVER (PARTITION BY ID) AS max_id 
函数和最大值将在max_id=1上,然后使用

WHERE max_id = 1 
删除其他行

但我认为有一种方法可以做得更好,但我找不到

更新:

解决这个问题的一个棘手办法是

SELECT *
FROM t t1
    LEFT JOIN t t2 ON t1.value<t2.value
WHERE t2.value IS NULL
选择*
从t1开始

在t1上左连接t2。值最简单的方法是对数据排序并提取一行:

select t.*
from t
order by value desc
fetch first 1 row only;
如果您想要领带,可以将带有领带的
添加到
先取

另一种方法是:

select t.*
from t
where t.value = (select max(t2.value) from t t2);

使用
值上的索引可以获得非常好的性能

感谢我找到了一种更巧妙的方法,使用joins select*from t t1 left join t t2 on t1.value