如何查询连接表以满足多个条件?

时间:2012-09-08 03:25:27

标签: mysql sql select

我有一个包含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?

1 个答案:

答案 0 :(得分:10)

这应该有效:

SELECT member_ID
FROM responses
WHERE response_ID IN (1,5)
GROUP BY member_ID
HAVING COUNT(DISTINCT response_id) = 2

您需要计算返回的记录数,该记录数等于IN子句中提供的值的数量。

SQLFiddle Demo