回答

收藏

最佳方法:在有关N-1关系的SQL查询中获取最新的N边记录

技术问答 技术问答 185 人阅读 | 0 人回复 | 2023-09-12

我的问题有点简单…让我们假设我有两个关于1的问题-N关系简单表:8 t- Q/ u* B* t# C7 N) ~: p
Order----------IdOrder_Status--------------IdOrderIdDescriptionDateTimeStatus我需要检索以下结果:OrderId以及最新状态的描述和时间戳。
" j6 o) |2 \; [" }" `9 j" i通常我会做这样的事:" u, |* g6 N2 b7 \3 r+ D- n
SELECT    o.Id,   st.Description,   st.DateTimeStatusFROM Order oJOIN OrderStatus st ON    st.OrderId = o.id    AND    st.DateTimeStatus = (       SELECT MAX(st1.DateTimeStatus)        FROM OrderStatus st        WHERE st1.OrderId = o.Id    )但我不认为这是最美丽或最高性能的方式。它正在考虑更大的查询(如果不限制子查询结果,则不安全)。
% ^. f% v7 k) D9 `' |* \4 w我也可以简单地添加两个表来降序st.DateTimeStatus并将结果限制为1。  U9 V. [# r. z1 K7 r# H
好吧..还有更好的办法吗?" y$ L2 k% j, }+ m; K8 D( O
我研究过类似的问题,但我没有找到类似于我想知道的:最好的方法。% C1 H! P" E& Q
                                                                $ ~9 ^) h" Z& c# i
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则