sql >> データベース >  >> RDS >> Mysql

3つのテーブルからのMySQLデータ抽出-結合と最大

    グループごとの最大値 が必要です :

    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
    

    sqlfiddle でご覧ください 。

    このクエリはすべてを返すことに注意してください 各タグ内のポイント数が最大であるビデオ。したがって、タイタグに対して複数のレコードが返されます。このような状況で1つのレコードのみを返す場合は、返す必要のあるビデオを決定する方法を指定してください。



    1. SpotlightCloudを使用してSQLServerのブロックを解決する

    2. JAVAを使用してmySqlにヘブライ語を書き込む

    3. 同じIDを持つ別のテーブルの行が別の列の特定の値を持つテーブルから行を選択します

    4. OracleにSKIPLOCKEDでTOPN行を返すように強制します