我试图为与持续时间相关的每个金额获得最多的反感结果。 这是我的表:
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
与持续时间相关的每个金额都有一个总计。 我的问题是,它们可以在相同的 amout 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。 我还尝试在这样的子查询中选择 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
);
尝试以下查询:
从 ID 描述的融资订单中选择 *
此查询的输出