0

我有一张桌子,poll_response,有三列:user_id, poll_id, option_id

给出任意数量的轮询/响应对,我如何确定不同user_ids 匹配的数量?

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

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

假设我想知道有多少用户对轮询 2 响应“1”,对轮询 3 响应“0”。

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

但是假设我想知道有多少用户对轮询 2 响应“1”,对轮询 4 响应“0”。

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

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

4

1 回答 1

1

了解有多少用户对投票 2 回复了“1”,对投票 3 回复了“0”。

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 小提琴在这里。

于 2012-09-13T02:19:07.387 回答