Query to find products with all the given attributes
Your example has syntax errors.  Were you hoping to get just 1001001 from that sample data?

One way:

( SELECT product_id from product_attributes
        WHERE att_val1 = 'x202' AND att_val2 = '2200' )
UNION ALL
( SELECT product_id from product_attributes
        WHERE att_val1 = 'SS120' AND att_val2 = '1080' )
GROUP BY product_id
HAVING COUNT(*) = 2;


The best way:

SELECT product_id
    FROM product_attributes AS a
    JOIN product_attributes AS b  USING(product_id)
    WHERE ( a.att_val1 = 'x202'  AND a.att_val2 = '2200' )
      AND ( b.att_val1 = 'SS120' AND b.att_val2 = '1080' )


Both ways will benefit from INDEX(att_val1, att_val2, product_id). 

The schema is called EAV (Entity-Attribute-Value) or Key-Value.  It is a nuisance for writing queries and for performance.  More discussion:   http://mysql.rjweb.org/doc.php/eav