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')
Xem nó trên sqlfiddle .
Ngoài ra, nếu bạn hài lòng khi các loại được nối thành một chuỗi được phân tách, bạn có thể trích xuất dữ liệu mong muốn trong một lần chuyển:
SELECT ID, GROUP_CONCAT(TYPE)
FROM types
WHERE COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING COUNT(*) = 2
Xem nó trên sqlfiddle .
Lưu ý rằng, nếu bảng của bạn có thể chứa nhiều bản ghi có cùng một (ID, COLOR)
ghép nối, bạn nên thay thế COUNT(*)
với COUNT(DISTINCT COLOR)
đắt hơn .