Sie möchten das gruppenweise 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
Sehen Sie es auf sqlfiddle .
Beachten Sie, dass diese Abfrage all zurückgibt Videos mit der maximalen Punktzahl in jedem Tag, sodass für verknüpfte Tags mehr als ein Datensatz zurückgegeben wird. Wenn Sie in solchen Situationen nur einen Datensatz zurückgeben möchten, geben Sie bitte an, wie das zurückzugebende Video bestimmt wird.