答案 0 :(得分:1)
在ANSI标准SQL中,您将使用dense_rank()
函数:
select t.*
from (select t.*,
dense_rank() over (partition by id order by amount desc) as seqnum
from t
) t
where seqnum = 2;
注意:这给出了第二大值。如果首先存在联系,则它给出第二个值。
编辑:
在MySQL中,你可以这样做:
select t.*
from t
where t.amount = (select t2.amount
from t t2
where t.id = t2.id
order by t2.amount desc
limit 1, 1
);
注意:这会处理不同的关系。即使与第一个相同,它也会给出第二个数量。我不确定你想要什么。