我需要一个查询,该查询可以在日期条件之内恢复约会,或者如果hc_id与我提供的匹配,并且stop_date为NULL,则无论如何我都希望它返回。现在,我的查询适用于我的大多数情况,除了stop_date为NULL时,什么也不会恢复。
我无法使OR语句像我认为的那样起作用。
SELECT DISTINCT r.appt_type_id, r.frequency, r.frequency_type, r.frequency_data, r.start_date, r.end_date, r.stop_date as 'stop_recurring'
FROM appt_recurring r
WHERE r.hc_id = :hc_id
AND (r.start_date >= :start_date
OR r.stop_date >= :end_date)
OR r.stop_date = NULL
ORDER BY r.start_date ASC
这给我带来的约会仅是与第4行的第一个AND行匹配的,而与括号位置或之后的行无关。
答案 0 :(得分:2)
= NULL
始终失败。我想你想要
WHERE r.hc_id = :hc_id AND
r.start_date >= :start_date AND
(r.stop_date >= :end_date OR
r.stop_date IS NULL
)