我有一个表格,用于投票者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
注意:我已经使用连接查询解决了,是否可以避免连接和子查询?
答案 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;