आप अब भी having
. का उपयोग कर सकते हैं , लेकिन प्रत्येक उत्पाद के लिए परीक्षण करें -- और किसी अन्य उत्पाद की अनुपस्थिति के लिए:
SELECT o.order_id
FROM orders o
GROUP BY o.order_id
HAVING SUM( product_id = 222 ) > 0 AND
SUM( product_id = 555 ) > 0 AND
SUM( product_id NOT IN (222, 555) ) = 0 ;
ध्यान दें कि यह MySQL शॉर्टहैंड का उपयोग करता है, जहां बूलियन अभिव्यक्तियों को 1
. के साथ संख्याओं के रूप में माना जाता है सच के लिए और 0
झूठे के लिए। मानक सिंटैक्स है:
HAVING SUM( CASE WHEN product_id = 222 THEN 1 ELSE 0 END) > 0 AND
SUM( CASE WHEN product_id = 555 THEN 1 ELSE 0 END ) > 0 AND
SUM( CASE WHEN product_id NOT IN (222, 555) THEN 1 ELSE 0 END ) = 0 ;