sql - SQL - 查询多列的最高值
问题描述
Table1:
Name, Value A, Value B, Value C
我想按值 A 找到最大的名称,按值 B 找到最大的名称,按值 C 找到最大的名称。有人有快速的方法吗?表本身相当大,我真的想避免为每个值多次运行它。
谢谢!
解决方案
如果您在每列(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) ;