我有一個帶有兩個表格的數據庫:歌曲,視頻。每首歌都有很多視頻。如何獲取每首歌曲中觀看次數最多的視頻?選擇每首歌曲觀看次數最多的視頻
song : id, songname
video : id, song_id, url, views
結果應該是[id(song), songname, url(for the most viewed video)
。
還有一個問題,我怎麼知道單個查詢中結果的數量?
我有一個帶有兩個表格的數據庫:歌曲,視頻。每首歌都有很多視頻。如何獲取每首歌曲中觀看次數最多的視頻?選擇每首歌曲觀看次數最多的視頻
song : id, songname
video : id, song_id, url, views
結果應該是[id(song), songname, url(for the most viewed video)
。
還有一個問題,我怎麼知道單個查詢中結果的數量?
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
我怎麼會知道結果,在一個單一的查詢號碼是多少?
因爲上面的查詢使用「限制」,即使有幾首歌的視圖數相同,它總是隻返回一首歌曲。所以你總是在這個查詢中得到一個結果。
我不是要求頂級歌曲,我需要觀看最多的視頻以及每首歌曲 – Rawhi 2014-10-09 15:51:58
這應該工作。只是不確定是否需要別名子查詢。但基本上是這樣:
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)
如果你有一噸的爲每首歌曲的視頻,該查詢可能需要一段時間了。
這樣的事情可以做的伎倆:
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
嘛,你嘗試過什麼? – OldProgrammer 2014-10-09 15:44:06
如果這些答案之一是正確的/幫助你,請接受它/投票 – mmcrae 2014-10-09 16:15:24