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')
इसे sqlfiddle पर देखें ।
वैकल्पिक रूप से, यदि आप प्रकारों को एक सीमित स्ट्रिंग में जोड़कर खुश हैं, तो आप एक ही पास में वांछित डेटा निकाल सकते हैं:
SELECT ID, GROUP_CONCAT(TYPE)
FROM types
WHERE COLOR IN ('Red', 'Blue')
GROUP BY ID
HAVING COUNT(*) = 2
इसे sqlfiddle पर देखें ।
ध्यान दें, यदि आपकी तालिका में एक ही (ID, COLOR)
के साथ कई रिकॉर्ड हो सकते हैं जोड़ी, आपको COUNT(*)
. को बदलना चाहिए अधिक महंगे COUNT(DISTINCT COLOR)
. के साथ ।