获取ORACLE中每个号码的最新记录

Get latest records of each number in ORACLE

我在 Trans table 中有一组数据。其中包含 transno 的几笔交易。我需要获取每个 transno 的最新交易记录。 这些数据存储在Oracle数据库中。

我试过下面的查询,每次都没有什么变化。但我只给了一个生的。此 table 包含超过 1m 的记录。

select * from (select transid,transno,transdate,transtype from trans order by TRANSID desc) where rownum <= 1

请帮忙解决这个问题。

您需要使用 ROW_NUMBER window 函数来获取所有 transno

的最新 transdate
select * from 
(
select  transid,transno,transdate,transtype,
Row_number()over(partition by transno order by transdate desc) as rn
from trans
) where RN = 1

让我知道这是否有效。

SELECT * FROM trans GROUP BY transno ORDER BY transid DESC LIMIT 1

我不是MySQL高手,所以让我知道。

此解决方案的最佳方式是@Prdp 的方式。但是还有另一种方法。您可以像这样使用 inline view

select * from 
trans t
inner join 
(
   select transno, max(transdatetime) maxtransdatetime from trans group by transno
) s
on s.transno = t.transno and s.maxtransdatetime = t.transdatetime