U wilt het groepsgewijs maximum :
SELECT * FROM Video JOIN (
SELECT VideoTags.tag_id, MAX(points) points
FROM Video JOIN VideoTags ON Video.id = VideoTags.video_id
GROUP BY VideoTags.tag_id
) t USING (points) JOIN Tags ON t.tag_id = Tags.id
Bekijk het op sqlfiddle .
Merk op dat deze zoekopdracht alle retourneert video's met het maximale aantal punten binnen elke tag, dus er wordt meer dan één record geretourneerd voor gekoppelde tags. Als u in dergelijke situaties slechts één record wilt retourneren, geef dan aan hoe u kunt bepalen welke video moet worden geretourneerd.