我有这张桌子:
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字段?
谢谢!
答案 0 :(得分: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
答案 1 :(得分:1)
这被称为groupwise maximum。要获得它,您必须再次将结果加入到您的表中:
SELECT * FROM table NATURAL JOIN (
SELECT A, MAX(C) AS C FROM table GROUP BY A
) t
答案 2 :(得分:1)
您可以将其添加到所选列,但也必须按其分组。否则结果是不确定的。
SELECT A, B, MAX(C)
FROM table
GROUP BY A, B
答案 3 :(得分: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;