首页 > 解决方案 > SQL - 查询多列的最高值

问题描述

Table1:
Name, Value A, Value B, Value C

我想按值 A 找到最大的名称,按值 B 找到最大的名称,按值 C 找到最大的名称。有人有快速的方法吗?表本身相当大,我真的想避免为每个值多次运行它。

谢谢!

标签: sql

解决方案


如果您在每列(a)(b)和上都有一个索引(c),您可以执行以下操作:

select t.*
from t
where t.a = (select max(t2.a) from t t2) or
      t.b = (select max(t2.b) from t t2) or
      t.c = (select max(t2.c) from t t2) ;

where子句应该能够使用索引。如果没有,您可以将其拆分为子查询。像这样的东西:

select t.*
from t
where t.a = (select max(t2.a) from t t2) 
union all
select t.*
from t
where t.b = (select max(t2.b) from t t2) 
select t.*
from t
where t.c = (select max(t2.c) from t t2) ;

推荐阅读