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

MySQL सिलेक्ट आईडी जो एक कॉलम के लिए कई विशिष्ट मानों के साथ अलग-अलग पंक्तियों पर होती है

WHERE क्लॉज में आपकी अभिव्यक्ति एकल पंक्ति . के विरुद्ध काम करती है सम्मिलित परिणाम सेट का। इसीलिए WHERE category_id = 201 AND category_id = 202 काम नहीं करता -- क्योंकि यह एक ही पंक्ति में दो मान नहीं हो सकते।

तो आपको परिणाम सेट की एक पंक्ति में तालिका से दो पंक्तियों में शामिल होने का कोई तरीका चाहिए। आप इसे स्वयं-शामिल . के साथ कर सकते हैं :

SELECT c1.item_id
FROM item_category AS c1
INNER JOIN item_category AS c2 ON c1.item_id = c2.item_id
WHERE c1.category_id = 201 AND c2.category_id = 202

जब आप तीन, चार, पांच या अधिक मानों की खोज करना चाहते हैं तो इस तकनीक को बढ़ाना कठिन होता है, क्योंकि इसके लिए N-1 की आवश्यकता होती है N . से मेल खाने के लिए जुड़ता है मान।

तो दूसरा तरीका है GROUP BY का उपयोग करना:

SELECT c.item_id, COUNT(*) AS cat_count
FROM item_category AS c
WHERE c.category_id IN (201,202)
GROUP BY c.item_id
HAVING cat_count = 2

दोनों तकनीकें ठीक हैं, और अलग-अलग परिस्थितियों में बेहतर काम करती हैं।



  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. sqlalchemy के साथ क्लॉज में मल्टी कॉलम कैसे लिखें?

  4. एक स्ट्रिंग से बचने का क्या मतलब है?

  5. mysql में उच्चारण संवेदनशील और केस असंवेदनशील utf8 संयोजन होना संभव है?