我收到了这样的查询
SELECT * FROM dayTable
LEFT JOIN ProcessTable firstprocess
ON dayTable.id = a.daytablefkid
AND firstprocess.processid in (1234)
AND firstprocess.daytablefkid
IN (SELECT id
FROM daytable
WHERE dayTable.DateFrom > @dateFrom
AND dayTable.DateTo < @dateTo)
LEFT JOIN ProcessTable secondprocess
ON daytable.id = secondprocess.daytablefkid
and secondprocess.processid in (4567)
IN (SELECT id
FROM daytable
WHERE dayTable.DateFrom > @dateFrom
AND dayTable.DateTo < @dateTo)
WHERE dayTable.DateFrom > @dateFrom AND dayTable.DateTo < @dateTo
我注意到的第一件事是连接中的第一个 IN 语句“IN(XXXX)”可以转换为 WHERE 语句,但是两个连接中的第二个 IN 语句有点令人困惑,因为相同的过滤也在查询结束。
我想知道它们是否确实是多余的,或者如果它们被删除,结果集是否会有所不同?