Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Datenextraktion aus 3 Tabellen - Joins und max

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.