Maybe this is what you are looking for:
SELECT *
FROM products
WHERE
(product_type = "abc" AND (product_price >= 100 AND product_price <= 1000))
OR (product_type = "def" AND (product_price >= 2500 AND product_price <= 5000))
OR product_type NOT IN ("abc", "def")
solved Is it possible to write this type of query with MySQL?