1

以下是个人资料答案表:

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 匹配的答案。

如何编写此选择查询?

我尝试了以下方法,但显然我不太了解 group by 的工作原理:

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

4

1 回答 1

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
于 2013-01-29T00:58:36.667 回答