[英]Get most recent ROW with a GROUP BY on multiple columns
我试图为与持续时间相关的每个金额获得最反感的结果。 这是我的表:
SELECT * FROM financement;
id amount duration total
8 200 5 result8
7 200 4 result7
6 100 5 result6
5 100 4 result5
4 200 5 result4
3 200 4 result3
2 100 5 result2
1 100 4 result1
每个与持续时间相关联的金额都有一个总数。 我的问题是,它们可以是多行的相同数量的 x 持续时间,我只想要最新的。 例如在我的情况下:
id amount duration total
5 100 4 result5
1 100 4 result1
我尝试像这样使用 GROUP BY:
SELECT * FROM `financement` GROUP BY amout, duration ORDER BY `id` DESC
但是使用这种方法,即使使用 ORDER BY id DESC,我仍然得到最古老的 ROW。 我还尝试在这样的子查询中使用 SELECT max(),但是查询非常长并且超时。
SELECT * financement where id in (select max(id) from financement group by amount, duration);
我怎样才能得到这个输出?
id amount duration total
8 200 5 result8
7 200 4 result7
6 100 5 result6
5 100 4 result5
这应该有效:
SELECT * FROM `financement`
WHERE id IN (
SELECT max(id) as id FROM `financement` GROUP BY duration, amount
)
ORDER BY `id` DESC
我想你想要过滤。 您可以使用标量子查询:
select f.*
from financement f
where f.id = (select max(f2.id)
from financement f2
where f2.amount = f.amount and f2.duration = f.duration
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.