我想在一次查询中匹配单个查询中的多个值。喜欢我所做的事情。我想将不同问题的值与我已经制作了一组条件的不同答案相匹配,如下面的代码所示。但是这段代码对我不起作用。
SELECT `user_id`
FROM `tb_user_answers`
WHERE (
`question_id` = '1'
AND `answer_id` = '2'
)
AND (
`question_id` = '2'
AND `answer_id` IN(4, 6)
)
AND (
`question_id` = '3'
AND `answer_id` IN(8, 9, 10)
)
我们需要获取那些与这些条件完全匹配的记录。所以我认为我们不能使用OR代替AND,因为我们需要所有条件都应该匹配。
答案 0 :(得分:0)
为了满足所有标准,您可以使用聚合并为过滤器设置过滤器,以下查询将返回user_id,其中所有这些条件不仅满足单个条件而且满足所有条件。
SELECT `user_id`
FROM `tb_user_answers`
GROUP BY `user_id`
HAVING SUM(`question_id` = '1' AND `answer_id` = '2') > 0
AND SUM(`question_id` = '2' AND `answer_id` IN(4, 6)) > 0
AND SUM(`question_id` = '3' AND `answer_id` IN(8, 9, 10)) > 0