我有一个类似的查询:
SELECT *
FROM TableA a
LEFT JOIN TABLEB b
ON a.ColA = b.ColA
WHERE b.Col1 IS NULL
OR (b.Col1 = A AND b.Col2 = B AND b.Col3 BETWEEN @StartDate AND @EndDate)
我得到一个奇怪的结果集,因为我希望从 TableA 返回每一行,但查询的日期部分搞砸了结果集,只返回 3 行。我知道这一点,因为当我删除日期时间过滤器并保留其他两个过滤器时,我会得到正确的结果。
真的很难过这似乎是“意外行为”,我无法从逻辑上解释为什么会发生这种情况。