Jeg tror, du er ude efter dette:
SELECT image_id
FROM list
WHERE (style_id, style_value) IN ((24,'red'),(25,'big'),(27,'round'))
GROUP BY image_id
HAVING count(distinct style_id, style_value)=3
Du kan ikke bruge OG, fordi værdier ikke kan være 24 red og 25 big og 27 round på samme tid i samme række, men du skal kontrollere tilstedeværelsen af style_id, style_value i flere rækker under samme image_id .
I denne forespørgsel bruger jeg IN (som i dette særlige eksempel svarer til en OR), og jeg tæller de forskellige rækker, der matcher. Hvis 3 forskellige rækker matcher, betyder det, at alle 3 attributter er til stede for det image_id , og min forespørgsel vil returnere den.