Saya pikir Anda mengejar ini:
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
Anda tidak dapat menggunakan AND, karena nilainya tidak boleh 24 red dan 25 big dan 27 round pada saat yang sama di baris yang sama, tetapi Anda perlu memeriksa keberadaan style_id, style_value dalam beberapa baris, di bawah image_id yang sama .
Dalam kueri ini saya menggunakan IN (dalam contoh khusus ini, setara dengan OR), dan saya menghitung baris berbeda yang cocok. Jika 3 baris berbeda cocok, itu berarti semua 3 atribut ada untuk image_id itu , dan kueri saya akan mengembalikannya.