我在努力解决高级查询时遇到了一些问题。
投票表中基本上有与给定配乐相对应的投票。我的查询需要根据获得的票数获得配乐的排名。
当表格中有投票时,我下面的方法工作得很好,但是当没有投票时,排名被赋予了一个NULL
值。
这是查询:
SELECT soundtrack.*,
(SELECT WrappedQuery.rank
FROM (SELECT @rownum := @rownum + 1 AS rank,
prequery.soundtrack_id
FROM (SELECT @rownum := 0) sqlvars,
(SELECT Count(*),
soundtrack_id
FROM vote
GROUP BY vote.soundtrack_id
ORDER BY Count(*) DESC) prequery) WrappedQuery
WHERE WrappedQuery.soundtrack_id = soundtrack.id) AS rank
FROM soundtrack
WHERE soundtrack.id = 33
AND live = 1
ORDER BY rank ASC
我感觉问题与(SELECT COUNT(*))
零件有关,但到目前为止我所尝试的一切都没有成功。
希望有人能对我的问题有所了解。
编辑 这是 SQLFiddle http://www.sqlfiddle.com/#!2/c8db2/2/0