我的问题有点简单…让我们假设我有两个关于1-N关系的简单表:
Order ---------- Id Order_Status -------------- Id OrderId Description DateTimeStatus
我需要检索以下结果:OrderId以及最新状态的描述和时间戳。
通常我会做这样的事情:
SELECT o.Id, st.Description, st.DateTimeStatus FROM Order o JOIN OrderStatus st ON st.OrderId = o.id AND st.DateTimeStatus = ( SELECT MAX(st1.DateTimeStatus) FROM OrderStatus st1 WHERE st1.OrderId = o.Id )
但是我不认为这是最美的方式,也不是最高性能的方式,它正在考虑更大的查询(而且如果不限制子查询的结果,这是不安全的)。
我还可以简单地加入两个表,以降序方式对st.DateTimeStatus进行排序,并将结果限制为1。
好吧..还有更好的方法吗?
我研究了类似的问题,但没有找到与我想知道的东西类似的东西:最佳方法。
I could also simply join the two tables, ordering in descencing way the st.DateTimeStatus and limiting the result to 1.
我认为您很难找到比这更有效的选择。