繁体   English   中英

在多列上使用 GROUP BY 获取最新的 ROW

[英]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
             );

试试这个查询:

SELECT * FROM Finance ORDER BY id DESC

此查询的输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM