MySQL:查找具有相同轮询答案的用户数

时间:2012-09-13 02:07:11

标签: mysql database join

我有一个表poll_response,有三列:user_idpoll_idoption_id

提供任意数量的投票/回复对,如何确定不同user_id匹配的数量?

因此,假设表的数据如下所示:

user_id | poll_id | option_id
1         1         0
1         2         1
1         3         0
1         4         0
2         1         1
2         2         1
2         3         1
2         4         0

假设我想知道有多少用户回复“1”进行投票2而“0”进行投票3。

在这种情况下,只有用户1匹配,所以答案是:只有一个不同的用户。

但是假设我想知道有多少用户回复“1”进行轮询2而“0”回复进行轮询4。

在这种情况下,用户1和用户2都匹配,所以答案是:有2个不同的用户。

我在构建MySQL查询时遇到了麻烦,特别是考虑到有任意数量的轮询/响应对。我只是尝试将一堆连接链接在一起吗?

1 个答案:

答案 0 :(得分:1)

要知道有多少用户回复“1”进行轮询2,将“0”回复进行轮询3。

select count(user_id) from(
select user_id from tblA 
where (poll_id=2 and option_id=1) or (poll_id=3 and option_id=0)
group by user_id
having count(user_id)=2
)m

SQL FIDDLE HERE.