我有一个包含2列的表格(见下文)。成员可以对问题进行多次回复:
RESPONSES
---------
member_id INT
response_id INT
SAMPLE DATA
member_id -- response_id
1 -- 3
1 -- 5
2 -- 1
2 -- 5
2 -- 9
3 -- 1
3 -- 5
3 -- 6
我需要做的是在表中查询符合所有响应条件的成员。例如,我需要选择response_id为1 AND 5的所有成员。我使用以下查询:
SELECT DISTINCT member_id
FROM responses
WHERE response_id = 1 AND response_id = 5
我希望能回到member_id的2和3.但是我没有得到任何回报。我使用了EXPLAIN,它显示我的查询位置有错误。我做错了什么?
此外,是否存在类似于IN的函数,其中必须满足所有条件才能返回true?
答案 0 :(得分:10)
这应该有效:
SELECT member_ID
FROM responses
WHERE response_ID IN (1,5)
GROUP BY member_ID
HAVING COUNT(DISTINCT response_id) = 2
您需要计算返回的记录数,该记录数等于IN
子句中提供的值的数量。