This is a "sets-within-sets" query
You can try to get count base on the condition, then find the variant_id count equal 2
Schema (MySQL v5.6)
CREATE TABLE T(
variant_id INT,
filter_id INT
);
INSERT INTO T VALUES (1585593211,4);
INSERT INTO T VALUES (1585593211,48);
INSERT INTO T VALUES (1585593212,4);
INSERT INTO T VALUES (1585593212,49);
Query #1
SELECT variant_id
FROM T t1
where filter_id in (4,48)
group by variant_id
HAVING COUNT(*) = 2;
| variant_id |
| ---------- |
| 1585593211 |
View on DB Fiddle
or
select variant_id
from T
group by variant_id
having sum(filter_id = 4) > 0 and
sum(filter_id = 48) > 0