我有一個高級查詢的問題,我正在努力讓我的腦袋周圍。COUNT()與空值,在子查詢中
本質上,票數表中有與選定電影配樂相對應的票數。我的查詢需要根據已獲得的投票來獲得配樂的排名。
下面我的方法工作得很好,當表中有投票時,但是當沒有內容時排名被賦予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
我還沒有嘗試,但我有這樣的想法,而不架構.... – jaczes
與小改工作。看到我的問題。謝謝。 – freshnode
我害怕我錯了,別人正在處理數據並投票,使查詢工作。還有誰? – freshnode