最简单的写法了应该是
select uid,nick_name,achievement
from user_info a left join exam_record b using(uid) left join practice_record c using(uid)
where nick_name like "牛客%号"
and achievement between 1200 and 2500
group by uid
having max(month(b.start_time)) =9 or max(month(b.submit_time))=9 or max(month(c.submit_time))=9