我需要从数据库中获取所有运行,但需要标记此运行是否有错误。
3 表:
- 运行:包含运行)
- Runfiles:包含在运行期间处理的文件 ID
- 消息:包含错误、警告、...
这个查询可以进一步优化吗?
SELECT TOP 1000 runid,
start,
end,
userid,
CASE
WHEN EXISTS(SELECT rf.fk_fileid
FROM runfiles rf
WHERE rf.fk_runid = r.runid
AND EXISTS(SELECT m.messageid
FROM messages m
WHERE m.fk_fileid =
rf.fk_fileid
AND m.fk_statusid = 4))
THEN 1
ELSE 0
END AS ContainsError
FROM runs r
ORDER BY start DESC
请不要评论表名,它们是为这个问题翻译的。
谢谢!