我正在尝试执行以下查询
SELECT a.userid, COUNT(a.id) AS count_answers, SUM(v.yes_vote) as total_up_votes, SUM(v.all_vote - v.yes_vote) as total_down_votes, CAST(COUNT(a.id) + SUM(v.yes_vote) * 4 - SUM(v.all_vote) AS SIGNED) AS voting_points
FROM (answers a)
LEFT OUTER JOIN answers_vote_count v ON r.id = v.answer_id
GROUP BY a.userid
ORDER BY count_answers DESC
如您所见,我正在尝试计算收到的答案收到的分数。
点数计算如 -
我的麻烦是 - 如果答案没有up_vote和down_vote,那么这些点就会变成NULL。 COUNT(答案)部分无法正常工作。
我在这里做错了什么?
此致
答案 0 :(得分:0)
将预先计算的分数值存储在问题表中。
答案 1 :(得分:0)
我明白了。由于我正在进行LEFT JOIN
投票,这就是为什么没有找到投票的答案会变为NULL。这可以使用SQL查询中的CASE WHEN ELSE来解决 - 当总IS NULL时使用0。