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

SQL में डबल नेस्टेड NOT EXISTS स्टेटमेंट अपरिहार्य क्यों हैं?

आपका प्रश्न है:"उन सभी घटकों का पता लगाएं जो एक विशिष्ट शहर में सभी परियोजनाओं के लिए भेजे गए हैं/हैं।" आप इसे "उन सभी घटकों को खोजें जहां किसी दिए गए शहर में कोई परियोजना नहीं है जिसमें घटक नहीं है" के रूप में आप इसे दोहरा रहे हैं।

मैं सीधे इसका उत्तर देना चाहूँगा:

select scp.component
from scp join
     projects p
     on scp.pnr = p.pnr
where p.city = 'Foobar Town'
group scp.component
having count(distinct scp.pnr) = (select count(distinct pnr)
                                  from projects
                                  where city = 'Foobar Town'
                                 );

यह शहर में विभिन्न परियोजनाओं की संख्या की गणना करता है और उनकी तुलना शहर में परियोजनाओं की संख्या से करता है (distinct आईडी शायद सबक्वेरी में जरूरी नहीं है।

सबसे पहले, मुझे यकीन नहीं है कि यह आसान है। दूसरा, मैं यह स्वीकार करने वाला पहला व्यक्ति हूं कि NOT EXISTS विधि हो सकता है अधिक कुशल बनें, हालांकि NOT EXISTS . का नेस्टिंग उपश्रेणियों में प्रदर्शन के लिए हानिकारक हो सकता है। हालांकि, मुझे लगता है कि इसका पालन करना आसान है।




  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 छवि का आकार बदलना

  2. MySQL, एक साधारण फ़ंक्शन बनाएं

  3. एक डेटाबेस में MyISAM और InnoDB टेबल

  4. हाइबरनेट:स्वयं भ्रम में शामिल हों?

  5. MySQL:1970 से पहले की तारीखें