按问题分组

时间:2013-01-29 00:46:38

标签: sql

以下是个人资料答案表:

profile_id | answer_id
----------------------
1                1
1                4
1               10

这是一个表格,其中包含民意调查受访者的回复列表:

user_id | answer_id
-------------------
1            1
1            9
2            1
2            4
2           10
3           14
3           29

我想返回一个用户列表,其答案在(6,9)中,但也在(1,10)中,基本上所有答案都与配置文件1匹配。

如何编写此选择查询?

我尝试了以下内容,但显然我不太了解群组如何运作:

SELECT DISTINCT  [user_id]
FROM             [user_question_answers] a
GROUP BY         a.[user_id]
HAVING           a.[answer_id] IN (6,9)
AND              a.[answer_id] IN (1,10)

编辑:仅返回user_id 1

1 个答案:

答案 0 :(得分:2)

您的查询已结束。 。

SELECT           [user_id]
FROM             [user_question_answers] a
GROUP BY         a.[user_id]
HAVING           max(case when a.[answer_id] IN (6,9) then 1 else 0 end) = 1
AND              max(case when a.[answer_id] IN (1,10) then 1 else 0 end) = 1