select 数据基于比较同一 table 中两列之间的多个值

select data on base of comparing multiple values between two columns in same table

问题编号 (1,3,2,3) 回复 ID(1,6,4,7)

Question_Id   Response_Id
           1 =>1
           3=>6
           2=>4
           3=>7

我需要 select 来自 users_response(以下)table 的那些不同的用户,他们回答了上述所有问题并且答案与 response_id 中提到的相同( 1,6,4,7) 到 question_id(1,3,2,3) 分别。

结果应该仅为“2”。

你能帮我或给我一些提示来处理它吗?任何动态方式,因为可以增加 question_id 和 response_id 的计数。就像在这个例子中,这里只给出了总共 4 个条件,但它可能会上升或下降。

SELECT * FROM users_responses WHERE Question_Id = 1 AND Question_Id = 3 AND Question_Id = 2 AND Question_Id = 3 AND ( Question_Id = 1 AND Response_Id = 1 ) OR ( Question_Id = 3 AND Response_Id = 6 AND Response_Id = 7 ) OR ( Question_Id = 2 AND Response_Id = 4 ) GROUP BY user_id;

如果只有 4 个,这将是您的查询,如果有多个,您可以创建一个包含 Question_Id 和 Response_Id 对的数组。遍历此数组以创建 where 条件,将其存储在变量中并传入查询。