CREATE TABLE products (id int primary key auto_increment, name varchar(64));
INSERT INTO products(name) VALUES ('Prod1'), ('Prod2');
CREATE TABLE filters (id int primary key auto_increment, name varchar(64));
INSERT INTO filters(name) VALUES ('F1'), ('F1');
CREATE TABLE product_filter (
product_id int references products(id),
filter_id int references filters(id)
);
INSERT INTO product_filter VALUES (1, 2), (2, 2), (2, 1);
SELECT p.*
FROM products as p
WHERE EXISTS (
SELECT 1 FROM product_filter pf WHERE pf.filter_id=1 AND pf.product_id=p.id
) AND
EXISTS (
SELECT 1 FROM product_filter pf WHERE pf.filter_id=2 AND pf.product_id=p.id
);