0

不确定这是否可能-但我正在尝试执行以下操作有一个包含以下列的表格

 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

谢谢

4

2 回答 2

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大于零,如果不是,则为零。可能是您想要严格的1or 0,然后只需将其替换为

COUNT(IF(user_id = 10, 1, NULL))>0 AS has_user_id_10
于 2013-10-28T09:45:29.513 回答
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;
于 2013-10-28T09:47:55.280 回答