【发布时间】:2021-07-20 23:41:52
【问题描述】:
我有这种方式,我通过获取具有 max(created_on) 日期的相关详细记录来检查最新状态。
它有效,但它看起来很笨拙,我希望找到更好的方法。
select rd.stat_code from rec r, rec_detl rd
where r.id = rd.rec_id
and r.id = 13455478
and rd.id in (
select id from rec_detl rd1
where rd1.rec_id = r.id
and rd1.created_on = (
select max(created_on) from rec_detl rd2
where rd2.rec_id = r.id
));
在该示例中,rec_detl 表具有指示状态的 stat_code 列。 rec_detl表有一个外键指向rec表,所以rec表中的每一行对应多条rec_detl记录。
基本上,每次rec记录的状态更新时都会插入一个新的rec_detl。
所以我的问题是“有没有更好、更简单的方法来实现相同的目标并获取最新状态?”和“除了这种方式有点笨拙和丑陋之外,这种方式有什么问题吗?”
【问题讨论】:
-
你确定最后一个谓词应该是
rd2.rec_id = rd.id吗? -
您能否描述一下
pmt_req_id和rec_id列的确切含义? -
输入所需的输出和样本数据
-
@SayanMalakshinov 感谢您指出这一点......我现在更正了。