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

जहां क्लॉज में गिनती का उपयोग करना:समूह फ़ंक्शन का अमान्य उपयोग

आप केवल COUNT() . जैसे समग्र कार्यों का उपयोग कर सकते हैं एक HAVING . में खंड, या SELECT . में क्लॉज जब एक GROUP BY प्रयोग किया जाता है। WHERE क्लॉज उन पंक्तियों पर काम करता है जो FROM . से आती हैं खंड। कोई एकत्रीकरण नहीं हुआ है, इसलिए समग्र कार्यों के सार्थक होने का कोई तरीका नहीं है।

ऐसा लगता है कि आप जो करना चाहते हैं वह ENROLL तालिका से उन सभी छात्रों को ढूंढना है जो एक से अधिक बार उपस्थित होते हैं। फिर आप उन छात्रों के बारे में अधिक जानकारी प्राप्त करना चाहते हैं। ऐसा करने के संभावित रूप से कई तरीके हैं, लेकिन मैं एक सबक्वेरी की सिफारिश करूंगा।

SELECT s.*
  FROM student AS s
  JOIN (
    SELECT e.sno
      FROM enroll AS e
     GROUP BY e.sno
    HAVING COUNT(*) > 1
  ) AS e
    ON e.sno = s.sno
 ORDER BY s.age DESC
 LIMIT 10

JOIN . के बाद वहां सबक्वायरी क्या वह पहली गणना करता है (जिसमें छात्रों की ENROLL में कई पंक्तियाँ होती हैं) और मूल रूप से छात्र आईडी की सूची के साथ एक छद्म तालिका तैयार करता है। चूँकि हम इनर जॉइन कर रहे हैं, STUDENT टेबल में केवल वे पंक्तियाँ हैं जिनमें sno है हमारे सबक्वायरी में दिखाई देगा। इसका मूल रूप से ON द्वारा ख्याल रखा जाता है खंड।

चूंकि आपने एक टिप्पणी में कहा था कि आप छात्रों पर अतिरिक्त शर्तें लागू करने में सक्षम होना चाहते हैं, इसलिए मैंने कुछ उदाहरण कोड जोड़े हैं जहां ऐसा होगा। चूंकि वह जानकारी छात्र तालिका से आती है, इसे सबक्वायरी के बाहर किया जा सकता है। आपने विशेष रूप से "सबसे पुराने छात्रों" का मतलब नहीं बताया है, इसलिए मैंने अभी माना है कि आप 10 सबसे पुराने को कई पाठ्यक्रमों में नामांकित करना चाहते थे। आपको अपनी आवश्यकताओं के आधार पर समायोजित करने में सक्षम होना चाहिए।

अगर इनमें से कोई भी समझ में नहीं आता है तो मुझे बताएं और मैं और विस्तार से समझाने की कोशिश करूंगा।



  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 स्वचालित रूप से BETWEEN क्वेरी का अनुकूलन क्यों नहीं करता है?

  2. SequelizeJS में धीमे जुड़ाव

  3. UTF8 के साथ MySQL कमांड लाइन फ़ॉर्मेटिंग

  4. एक्सटेंशन mysqli गुम है, phpmyadmin काम नहीं करता है

  5. MySQL क्वेरी ऑप्टिमाइज़ेशन LIKE टर्म% ORDER BY int