Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मेरे सभी मानदंडों से मेल खाने वाली श्रेणी का चयन करने के लिए मुझे किस MySQL क्वेरी का उपयोग करना चाहिए?

SELECT  cat_id
FROM    (
        SELECT  DISTINCT cat_id
        FROM    cat_product
        ) cpo
WHERE   EXISTS
        (
        SELECT  NULL
        FROM    cat_product cpi
        WHERE   cpi.cat_id = cpo.cat_id
                AND product_id IN (2, 3)
        LIMIT 1, 1
        )

आपके पास एक UNIQUE होना चाहिए (cat_id, product_id) . पर अनुक्रमणिका (इस क्रम में) तेजी से काम करने के लिए।

यह समाधान INDEX FOR GROUP BY का उपयोग करेगा विशिष्ट श्रेणियों की सूची प्राप्त करने के लिए, और EXISTS विधेय COUNT(*) . से थोड़ा तेज होगा (चूंकि एकत्रीकरण के लिए कुछ ओवरहेड की आवश्यकता होती है)।

यदि आपके पास खोजने के लिए दो से अधिक उत्पाद हैं, तो पहले तर्क को LIMIT . में समायोजित करें तदनुसार।

यह LIMIT n - 1, 1 होना चाहिए , जहां n IN . में मदों की संख्या है सूची।

अपडेट करें:

सूची से सभी उत्पादों को रखने वाली श्रेणियों को वापस करने के लिए और कुछ नहीं, इसका उपयोग करें:

SELECT  cat_id
FROM    (
        SELECT  DISTINCT cat_id
        FROM    cat_product
        ) cpo
WHERE   EXISTS
        (
        SELECT  NULL
        FROM    cat_product cpi
        WHERE   cpi.cat_id = cpo.cat_id
                AND product_id IN (2, 3)
        LIMIT 1, 1
        )
        AND NOT EXISTS
        (
        SELECT  NULL
        FROM    cat_product cpi
        WHERE   cpi.cat_id = cpo.cat_id
                AND product_id NOT IN (2, 3)
        )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP में MySQL *.sql फ़ाइलें चलाना

  2. php:बाइनरी पर mysql_real_escape_string के प्रभावों को उलटना

  3. पायथन और MySQL डेटाबेस:एक व्यावहारिक परिचय

  4. डेटाबेस में पाठ क्षेत्र में php mysql भंडारण लाइन टूट जाता है

  5. PHP फ़ंक्शन में SQL क्वेरी डालना