select * from (select t1.uid, 'activity1' as activity from exam_record t1 group by t1.uid having min(t1.score) >= 85 union all select t3.uid, 'activity2' as activity from examination_info as t2, exam_record as t3 where t3.exam_id = t2.exam_id and year(t3.submit_time) = 2021 and t3.score > 80 and t2.difficulty = 'hard' and minute(timediff(submit_time,start_time)) < (t2.duration/2) group by t3.uid) t order by uid