0

我有这张桌子:

A,B,C
2,5,6
2,8,5
3,4,7
3,4,8

我想按 A 对结果进行分组,然后选择最大 C 值。它的查询类似于

SELECT A, MAX(C) FROM table GROUP BY A

我的问题是,如何检索 max(c) 值旁边的 B 值?这可以在同一个查询中完成,还是我需要一个连接查询并在运行第一个查询后查找 B 字段?

谢谢!

4

4 回答 4

1

您可以将它添加到您选择的列中,但也必须按它进行分组。否则结果是不确定的。

SELECT A, B, MAX(C)
FROM table
GROUP BY A, B
于 2012-11-26T11:49:46.010 回答
1
select * 
from table1 t
join 
   (SELECT A, MAX(C) as C 
    FROM table1 GROUP BY A )a
on t.A=a.A
and t.C=a.C
于 2012-11-26T11:48:26.133 回答
1

尝试这个:

select A,(select B from Table1 t1 where t1.A=t2.A and T1.C=T2.C) B ,MAX(c) C  
from Table1 T2 group by A;

小提琴演示

于 2012-11-26T11:53:56.423 回答
1

这被称为分组最大值。要获得它,您必须再次将结果加入到您的表中:

SELECT * FROM table NATURAL JOIN (
  SELECT A, MAX(C) AS C FROM table GROUP BY A
) t
于 2012-11-26T11:49:07.320 回答