AFAIK, bạn đang xoay vòng dữ liệu của mình và tôi nghĩ rằng hãy sử dụng max(case ...) ... group by
có hiệu suất tốt trong dữ liệu xoay vòng.
Tôi có thể đề xuất bạn sử dụng truy vấn này thay thế:
select event_date
, max(case when r.class = 40 then name end) `Class 40 Winner`
, max(case when r.class = 30 then name end) `Class 30 Winner`
from events e
left join results r on e.event_id = r.result_event and r.position = 1
group by event_date;