SELECT ID, TYPE FROM types NATURAL JOIN (
SELECT ID FROM types GROUP BY ID HAVING SUM(COLOR='Red') AND SUM(COLOR='Blue')
) t WHERE COLOR IN ('Red', 'Blue')
Lihat di sqlfiddle .
Atau, jika Anda senang memiliki tipe yang digabungkan menjadi string yang dibatasi, Anda dapat mengekstrak data yang diinginkan dalam satu lintasan:
SELECT ID, GROUP_CONCAT(TYPE)
FROM types
WHERE COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING COUNT(*) = 2
Lihat di sqlfiddle .
Perhatikan bahwa, jika tabel Anda mungkin berisi beberapa record dengan (ID, COLOR)
yang sama pasangan, Anda harus mengganti COUNT(*)
dengan COUNT(DISTINCT COLOR)
. yang lebih mahal .