选择每首歌曲中观看次数最多的视频

时间:2014-10-09 15:31:24

标签: mysql asp.net

我有一个带有两个表的数据库:歌曲,视频。每首歌都有很多视频。如何获取每首歌曲中观看次数最多的视频?

song : id, songname   
video : id, song_id, url, views

结果应为[id(song), songname, url(for the most viewed video)

还有一个问题,我怎么知道单个查询中的结果数量?

3 个答案:

答案 0 :(得分:0)

select  song.id, 
        song.songname, 
        video.url
from song, 
      video
where song.id = video.song_id
and  song.id = ?
order by video.views desc
limit 1
  

我怎么知道单个查询中的结果数量?

因为上面的查询使用" limit",它总是只返回一首歌,即使有几首歌具有相同的观看次数。所以你总是在这个查询中得到一个结果。

答案 1 :(得分:0)

这应该有效。只是不确定是否需要别名子查询。但基本上这个:

SELECT
    song.id, song.songname, video.url
FROM song
    JOIN video
       on song.id = video.song_id
WHERE video.views IN
(SELECT
    max(views)
FROM
    video
GROUP BY song_id)

如果每部歌曲都有大量视频,此查询可能还需要一段时间。

答案 2 :(得分:0)

这样的事情可以解决问题:

SELECT song.id, songname, url
FROM video
INNER JOIN song
ON song.id = song_id
WHERE views = (SELECT MAX(views) FROM video AS v WHERE v.song_id = video.song_id)
GROUP BY song_id, songname, url