जिस कारण से आप SUM()
का उपयोग नहीं कर सकते हैं WHERE
. में खंड खंड के मूल्यांकन का क्रम है।
FROM
आपको बताता है कि पंक्तियों को कहां से पढ़ना है। जैसे ही पंक्तियों को डिस्क से मेमोरी में पढ़ा जाता है, उन्हें WHERE
. के लिए चेक किया जाता है स्थितियाँ। (वास्तव में कई मामलों में पंक्तियाँ विफल हो जाती हैं WHERE
खंड डिस्क से भी नहीं पढ़ा जाएगा। "शर्तों" को औपचारिक रूप से विधेय . के रूप में जाना जाता है और कुछ विधेय का उपयोग किया जाता है - क्वेरी निष्पादन इंजन द्वारा - यह तय करने के लिए कि कौन सी पंक्तियाँ बेस टेबल से पढ़ी जाती हैं। इन्हें पहुंच कहा जाता है विधेय।) जैसा कि आप देख सकते हैं, WHERE
खंड प्रत्येक पंक्ति पर लागू होता है क्योंकि यह इंजन को प्रस्तुत किया जाता है।
दूसरी ओर, सभी पंक्तियों (जो सभी विधेय को सत्यापित करती हैं) को पढ़ने के बाद ही एकत्रीकरण किया जाता है।
इस बारे में सोचें:SUM()
केवल उन पंक्तियों पर लागू होता है जो WHERE
. को संतुष्ट करती हैं स्थितियाँ। अगर आप SUM()
डालते हैं WHERE
. में खंड, आप परिपत्र तर्क के लिए पूछ रहे हैं। क्या कोई नई पंक्ति WHERE
. से गुजरती है खंड? मुझे कैसे पता चलेगा? अगर यह पास हो जाएगा, तो मुझे इसे SUM
. में शामिल करना होगा , लेकिन यदि नहीं, तो इसे SUM
. में शामिल नहीं किया जाना चाहिए . तो मैं SUM
. का मूल्यांकन भी कैसे करूं? हालत?