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 条件,将其存储在变量中并传入查询。
问题编号 (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 条件,将其存储在变量中并传入查询。