2013-10-28 105 views
0

不知道這是可能的 - 但我嘗試做以下 有一個表以下colums與和查詢MYSQL case語句

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

如果下面的答案是不是你以後在做什麼(好像它可能是),考慮提供適當的DDL和/或一個小平臺,以達到理想的效果 – Strawberry

回答

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大於零,如果不是,則爲零。可能是你要嚴格10,然後簡單地替換成

COUNT(IF(user_id = 10, 1, NULL))>0 AS has_user_id_10 
+0

這種方式非常完美 - 非常感謝很多人 - 感謝它 – Gublooo

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;