我需要一些帮助来使用 postgres 完成以下查询。
例如,我有下表:(这是我要完成的工作的本质)
让我们称之为 - table_user_flags
user_id flag
1 1
1 2
2 1
2 3
3 1
3 2
3 3
我需要找到所有具有特定标志的记录的用户(在标志列下,每个标志至少有 1 条记录)
示例:所有具有标志 1,3(即 1 和 3)的记录的用户都回答(user_id 2,3)(但也希望简化扩展,以便我可以请求标志 1,2,3,4, 5等)
我尝试了很多东西,不幸的是我无法很好地表达情况,无法在谷歌上找到答案。
我最好的猜测(这是蹩脚的,可能是错误的)是(并提供了标志数组 - $flag_arr)
select a.user_id
from table_user_flags a, table_user_flags b
where a.flag = $flag_arr[0] and b.flag = $flag_arr[1] and a.user_id=b.user_id
但是这种策略很慢,而且只有在我需要 2 个标志时才有效,当我需要超过 2 个标志时,我需要为 flags_arr 的每个长度编写特定的查询。
我该如何解决这个问题?
我将不胜感激任何帮助!