मानक के अनुसार:
SELECT 1 FROM r HAVING 1=1
माध्यम
SELECT 1 FROM r GROUP BY () HAVING 1=1
उद्धरण आईएसओ / IEC 9075-2: 2011 7.10 सिंटेक्स नियम 1 (हवलदार पुरस्कार की परिभाषा का हिस्सा):
आज्ञा देना HC
हो <having clause>
। आज्ञा TE
देना है <table expression>
कि तुरंत शामिल हैं HC
। यदि TE
तुरंत नहीं है
<group by clause>
, तो " GROUP BY ()
" निहित है। आज्ञा देना T
तालिका के विवरणक के रूप में परिभाषित किया गया <group by clause>
GBC
है जिसमें निहित है TE
और R
इसका परिणाम होने दें GBC
।
ठीक है तो बहुत स्पष्ट है।
कथन: 1=1
सत्य खोज स्थिति है। मैं इसके लिए कोई उद्धरण नहीं दूंगा।
अभी
SELECT 1 FROM r GROUP BY () HAVING 1=1
के बराबर है
SELECT 1 FROM r GROUP BY ()
प्रशस्ति पत्र आईएसओ / आईईसी 9075-2: 2011 7.10 सामान्य नियम 1:
<search condition>
के प्रत्येक समूह के लिए मूल्यांकन किया जाता है R
। का परिणाम <having clause>
R के उन समूहों की एक समूहीकृत तालिका है जिसके लिए परिणाम
<search condition>
सत्य है।
लॉजिक: चूँकि सर्च की स्थिति हमेशा सही होती है, परिणाम है R
, जो कि अभिव्यक्ति द्वारा समूह का परिणाम है।
निम्नलिखित 7.9 के सामान्य नियमों का एक अंश है (समूह की परिभाषा CLAUSE द्वारा)
1) यदि कोई <where clause>
निर्दिष्ट नहीं है, तो T
पूर्ववर्ती परिणाम होने दें <from clause>
; अन्यथा, T
पूर्ववर्ती परिणाम होने दें <where clause>
।
2) मामला:
a) यदि कोई समूहीकरण स्तंभ नहीं हैं, तो <group by clause>
समूहित तालिका का परिणाम T
उसके एकमात्र समूह के रूप में है।
इस प्रकार हम यह निष्कर्ष निकाल सकते हैं
FROM r GROUP BY ()
एक समूह तालिका में परिणाम, एक समूह से मिलकर, शून्य पंक्तियों के साथ (चूंकि आर खाली है)।
7.12 के सामान्य नियमों का एक अंश, जो एक क्वेरी विशिष्टता (उर्फ ए सलेक्ट स्टेटमेंट) को परिभाषित करता है:
1) मामला:
क) यदि T
एक समूहीकृत तालिका नहीं है, तो [...]
ख) यदि T
एक समूहीकृत तालिका है, तो
मामला:
i) यदि T
0 (शून्य) समूह हैं, तो TEMP को एक खाली तालिका होने दें।
ii) यदि T
एक या एक से अधिक समूह हैं, तो प्रत्येक <value expression>
को पंक्तियों की T
एक तालिका बनाने के प्रत्येक समूह पर लागू किया जाता है , जहां समूहों की संख्या है । अस्थायी की मई के स्तंभ मान के मूल्यांकन द्वारा प्राप्त होता है मई । [...]TEMP
M
M
T
i
i
<value expression>
2) मामला:
a) यदि <set quantifier>
DISTINCT
निर्दिष्ट नहीं है, तो का परिणाम <query specification>
है TEMP
।
इसलिए चूंकि तालिका में एक समूह है, इसलिए इसमें एक परिणाम पंक्ति होनी चाहिए।
इस प्रकार
SELECT 1 FROM r HAVING 1=1
1 पंक्ति परिणाम सेट वापस करना चाहिए।
QED
SELECT COUNT(*) FROM r;
1 पंक्ति (साथ0
)SELECT COUNT(*) FROM r GROUP BY ();
देता है , जबकि कोई पंक्तियाँ नहीं देता है।