Mysql查询:选择条件状态

时间:2011-04-02 06:07:03

标签: mysql sql

我有一个表格,用于投票者ID(是,没有类型)的投票人数。表结构如下 -

`votes(topic_id, voter_id, vote_type, vote_value);`

Vote_value现在可以是0或1。因此,通过以下查询找到主题明确的投票频率

`SELECT topic_id, vote_type, sum(vote_value) vote_frequency 
from votes group by topic_id, vote_type;` 

结果将像 -

topic_id    vote_type   vote_frequency  
23      like        10  
45      xyz         7  
1023    fav         25

但我希望找到频率和状态,特定选民是否使用当前的vote_type投票选出此主题。

修改
结果我需要:让我找到投票(如上)与voter_id 5的状态,是否投票(1表示投票,0表示未投票)

topic_id   vote_type   vote_frequency  this_voter_has_voted  
23          like         10         1  
45          xyz           7         0  
1023        fav          25         1 

注意:我已经使用连接查询解决了,是否可以避免连接和子查询?

1 个答案:

答案 0 :(得分:2)

是的,您不需要JOIN或子查询。

SELECT topic_id,
       vote_type,
       SUM(vote_value) vote_frequency,
       MAX(CASE
             WHEN voter_id = 5 THEN 1
             ELSE 0
           END)        AS this_voter_has_voted
FROM   votes
GROUP  BY topic_id,
          vote_type;