我在努力解决高级查询时遇到了一些问题。
投票表中基本上有与给定配乐相对应的投票。我的查询需要根据获得的票数获得配乐的排名。
当表格中有投票时,我下面的方法工作得很好,但是当没有投票时,排名被赋予了一个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