あなたの例では where がありません。これを試してみてください...クエリを別の角度から見る必要があります...以下のコメントに基づいて、異なる日の制限で男性と女性を取得する簡単な方法を次に示します。UNION がなくても 1 つのステートメントでこれを行うことができるかもしれませんが、ユニオンは男性と女性の異なる日の論理を維持していると思います。
SELECT * from donor
LEFT JOIN donation ON donor.id=donation.donor_id
AND donation.donation_date > NOW() - INTERVAL 120 day
WHERE donation.donation_id IS NULL
AND donor.sex='female'
UNION
SELECT * from donor
LEFT JOIN donation ON donor.id=donation.donor_id
AND donation.donation_date > NOW() - INTERVAL 90 day
WHERE donation.donation_id IS NULL
AND donor.sex='male'
基本的に、このクエリは「寄付テーブルにあるすべての人を教えてください。90 日以内に寄付をした人に関する情報を含め、寄付の詳細がない人 (90 日間寄付していない人) のみを表示します。