我正在阅读(并且仍在学习)有关SQL中EXISTS
和IN
运算符之间的区别。是否可以更改以下语句,以便使用EXISTS
而不是IN
?我试过了,但查询需要很长时间才能完成。所以我显然做错了什么。
在下面的示例中,使用EXISTS
代替IN
会更有效吗?从用于IN
语句的当前子查询返回的OperationRecordID记录不会超过10条。
SELECT SPAS.SessionRecordID,
( SELECT MIN(TimeValue) AS MinAnaes
FROM tblTMActualTimes TMAT
WHERE OperationRecordID IN
( SELECT OperationRecordID
FROM tblTMActualOperation TMAO
WHERE TMAO.SessionRecordID = SPAS.SessionRecordID
)
AND CFTimeDefinitionID = 'INTOANS'
) AS FirstAnaesthetic
FROM tblSPActualSession SPAS
答案 0 :(得分:1)
正如评论中所说,它取决于数据更适合这种情况。但是,如果你在存在中做什么,你可以这样做:
SELECT
SPAS.SessionRecordID,
(
SELECT
MIN(TimeValue) AS MinAnaes
FROM tblTMActualTimes TMAT
WHERE EXISTS
(
SELECT
NULL
FROM
tblTMActualOperation TMAO
WHERE
TMAO.SessionRecordID = SPAS.SessionRecordID
AND TMAT.OperationRecordID=TMAO.OperationRecordID
)
AND CFTimeDefinitionID = 'INTOANS'
) AS FirstAnaesthetic
FROM
tblSPActualSession SPAS