通过更改 WHERE 条件的顺序,我得到了不同的结果,但我不明白为什么:
SELECT
...
WHERE (
-- Ramps that start this month
(r.start_dte > ? AND r.start_dte <= ?)
OR
-- Ramps that end this month and have no follow-up.
(r.end_dte >= ? AND r.end_dte <= ? AND r.id = m.latestId)
)
-- Throw out expired schedules or contracts
AND (s.term_dte > r.start_dte or s.term_dte is null)
AND (c.term_dte > r.start_dte or c.term_dte is null)
-- Throw out a ramp if its end date is before its start date
AND (r.end_dte > r.start_dte)
AND s.name not like '%zz%'
我的意图是满足前两个条件中的一个(斜坡必须在本月开始,或者本月结束并且没有后续行动),并满足所有其他条件。这不是我写的吗?
我知道事情没有正常工作,因为我得到的结果违反了倒数第二个AND
条件。