SELECT product_id FROM filter_product GROUP BY product_id HAVING COUNT(DISTINCT(CASE WHEN filter_value_id = 5 THEN 'equal to 5' WHEN filter_value_id IN (1, 2, 3) THEN 'one of 1,2,3' END)) = 2;
SELECT product_id FROM filter_product GROUP BY product_id HAVING COUNT(DISTINCT(CASE WHEN filter_value_id = 5 THEN 'equal to 5' WHEN filter_value_id IN (1, 2, 3) THEN 'one of 1,2,3' END)) = 2;