以下是获取最新版本行的一种简单方法。虽然这对单行来说“没问题”,但在每行需要进行评估时确实会减慢速度。
SELECT *
FROM dev.A t1
where to_char(last_operation_date,'yyyymmdd') = (select max(to_char(last_operation_date,'yyyymmdd'))
from dev.A t2
where t1.inte_id = t2.inte_id)
and t1.inte_id = 'PPP2434'
您可以使用ROW_NUMBER()函数在不使用相关子查询的情况下查找每个inte_id
的最新行。相关子查询通常需要嵌套循环步骤,这会减慢它们的速度。
SELECT *
FROM (
SELECT *
,ROW_NUMBER() OVER( PARTITION BY inte_id ORDER BY last_operation_date DESC ) last_op_order
FROM dev.A t1
and t1.inte_id = 'PPP2434'
)
WHERE last_op_order = 1;