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

MySQL में माइनस?

यह मानते हुए कि आपकी Topic_Tags तालिका अद्वितीय है, यह आपके सटीक का उत्तर देती है प्रश्न - लेकिन हो सकता है कि आपकी वास्तविक समस्या का सामान्यीकरण न किया जा सके:

SELECT
  TopicId
FROM Topic_Tags
JOIN Tags ON
  Topic_Tags.TagId = Tags.TagId
WHERE
  Tags.Name IN ('A', 'B', 'C', 'D', 'E', 'F')
GROUP BY
  TopicId
HAVING
  COUNT(*) = 3 
  AND MAX(Tags.Name) = 'C'

एक अधिक सामान्य समाधान होगा:

SELECT 
    * 
FROM (
    SELECT
        TopicId
    FROM Topic_Tags
    JOIN Tags ON
        Topic_Tags.TagId = Tags.TagId
    WHERE
        Tags.Name IN ('A', 'B', 'C')
    GROUP BY
        TopicId
    HAVING
        COUNT(*) = 3 
) as GoodTags
LEFT JOIN (
    SELECT
        TopicId
    FROM Topic_Tags
    JOIN Tags ON
        Topic_Tags.TagId = Tags.TagId
    WHERE
        Tags.Name = 'D'
        OR Tags.Name = 'E'
        OR Tags.Name = 'F'
) as BadTags ON
    GoodTags.TopicId = BadTags.TopicId
WHERE
    BadTags.TopicId IS NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कई से कई रिश्तों के साथ MySQL सीमा

  2. सर्वर डीबी (MySQL) के साथ बड़े स्थानीय डीबी को सिंक करें

  3. SQL/PHP:डेटाबेस से शीर्ष 3 सर्वाधिक बिकने वाले उत्पाद दिखाएं

  4. mysql अद्वितीय अनुक्रमणिका जावा में अपवाद हैंडलिंग विधि के रूप में उपयोग की जाती है

  5. SQL DELETE सिंटैक्स - DBMS द्वारा सूचीबद्ध