关于Mysql联表查询的问题

今天做了个sql测试,表结构及数据如下图

img

img

img

img

要求查询每个学生的最高分数的课程,sql如下

SELECT p.id,s.name,co.name,p.score
FROM result p
LEFT JOIN
(SELECT sid,MAX(score) mscore FROM result GROUP BY sid) c ON p.sid=c.sid
LEFT JOIN student s ON p.sid=s.id
LEFT JOIN course co ON p.cid=co.id
WHERE p.score=c.mscore

但是我感觉效率并不高,想问一下做IT的朋友们还有什么查询方式可以提高效率?

大同小异吧,解出来就行了