Нужно вывести все user_id у которых ВСЕ заказы со статусом 0, то есть результат должен быть:
2 и 3
Или только со статусом 1, то результат должен быть:
4
Вы не поняли - нужно только если у ВСЕХ заказов такой статус, если хоть один другой то этот пользователь не выводится.
В вашем примере будет 1,2,2,3 и 1,4
SELECT user_id FROM table
GROUP BY user_id
HAVING SUM (ABS(status_id)) -COUNT(status_id)=0
or
HAVING SUM (ABS(status_id)) = COUNT(status_id)
Выведет 2,3,4
select
distinct
t1.user_id
from table t1
left join
(select distinct
user_id
from table
where status_id <> 0
) t2 on t2.user_id = t1.user_id
where t1.status_id = 0
and t2.user_id is null