问题描述
我有一个 sql 语句,可以从表(机器)中获取所有 Id 的列表。
然后需要 (Events) 中与 id 匹配的另一行的最新实例,因此一直在进行子选择。
我需要多个匹配 id 的字段的最新实例,因此在这个单个语句中一个接一个地进行这些子选择,最终得到与此类似的结果...
这很有效,结果也很准确,因为事件表有数百万条记录,所以它变得非常慢。 Machine 表平均有 100 条记录。
是否有更好的子选择解决方案?也许做内部联接或存储过程?
感谢帮助:)
解决方法
您可以使用 http://localhost:8000/api/job.js
。您没有指定“最新实例”的定义方式。让我假设它基于时间列:
apply
Select a.id,b.*
from TableA a outer apply
(select top(1) b.Name,b.time,b.weight
from b
where b.id = a.id
order by b.time desc
) b;
和相关子查询都需要一个 APPLY
来执行您的意图。
ORDER BY
很像 APPLY
子句中的相关查询——有两个方便的增强。横向连接——技术上是 FROM
的作用——可以返回多行和多列。