如何在SQL中进行GROUP BY然后标记为0,1

The*_*ter 0 sql group-by

我需要GROUP BY item_id并检查其中user_id任何一个匹配变量.如果是这样,我希望它= 1,如果不是0.

例如,想像这样的表:

item_id, user_id
1         1
1         3
2         4
2         1
2         7
2         3
3         4
3         6
4         8
4         1
5         3


IF (user_id = 3,1,0) AS match,
Run Code Online (Sandbox Code Playgroud)

希望我的查询返回

item_id, match
1        1 
2        1
3        0
4        0
5        1
Run Code Online (Sandbox Code Playgroud)

其中"1"在item_id组中出现所有user_id 3.

Gor*_*off 5

您需要正确的聚合功能:

select item_id,
       max(case when user_id = 3 then 1 else 0 end) as hasmatch
from t
group by item_id
order by item_id
Run Code Online (Sandbox Code Playgroud)