Tôi thích sử dụng kết hợp cho điều này với kết hợp có điều kiện. Ví dụ:đối với dấu đầu dòng đầu tiên của bạn:
select a.carid
from attributes a
group by a.carid
having sum( (attribute, value) in ( ('color', 'red'), ('color', 'blue') ) ) > 0 and
sum( (attribute, value) in ( ('wheels', '2') ) > 0;
> 0
có nghĩa là tổ hợp thuộc tính / giá trị tồn tại. Sử dụng = 0
để xác định rằng nó không hoạt động.