不确定这是否可行 - 但我正在尝试执行以下操作 有一个包含以下列的表
vote_id (primary_key)
question_id
user_id
vote_count
这基本上存储了用户为特定问题投下的所有投票
现在,在单个查询中,我可以获得总投票数并检查特定用户是否已投票。
沿着这些方向的东西 - 比方说user_id 10
SELECT sum(vote),
(
CASE
WHEN (user_id = 10)
THEN user_id
ELSE NULL
END
) user_id
FROM vote_question
GROUP BY course_question_id
这显然不起作用。
我期待的是,如果某个特定用户已经投票 - 他的user_id应该与投票计数一起返回 - 如果他没有投票 - 返回null
由于
答案 0 :(得分:1)
那将是:
SELECT
SUM(vote),
COUNT(IF(user_id = 10, 1, NULL)) AS has_user_id_10,
FROM
vote_question
GROUP BY
course_question_id
- 如果id为10的用户投票,则has_user_id_10
大于零,如果不是,则为零。您可能需要严格1
或0
,然后只需将其替换为
COUNT(IF(user_id = 10, 1, NULL))>0 AS has_user_id_10
答案 1 :(得分:0)
请试试这个 -
select user_id, vote_count
from
(
select sum(vote) vote_count ,user_id, course_question_id from vote_question group by user_id, course_question_id
)
where vote_count <>0;