最佳方法:在有关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
解决方案: |
|
|
|
|
|