दूसरे शब्दों में कहें तो यह त्रुटि आपको बता रही है कि SQL सर्वर नहीं जानता कि कौन सा B
समूह से चयन करने के लिए।
या तो आप एक विशिष्ट मान का चयन करना चाहते हैं (उदा. MIN
, SUM
, या AVG
) इस मामले में आप उपयुक्त समग्र फ़ंक्शन का उपयोग करेंगे, या आप प्रत्येक मान को एक नई पंक्ति के रूप में चुनना चाहते हैं (अर्थात B
सहित) GROUP BY
. में फ़ील्ड सूची)।
निम्नलिखित डेटा पर विचार करें:
ID A B 1 1 13 1 1 79 1 2 13 1 2 13 1 2 42
क्वेरी
SELECT A, COUNT(B) AS T1
FROM T2
GROUP BY A
वापस आ जाएगा:
A T1 1 2 2 3
जो सब ठीक और अच्छा है।
हालांकि निम्नलिखित (अवैध) प्रश्न पर विचार करें, जो इस त्रुटि को उत्पन्न करेगा:
SELECT A, COUNT(B) AS T1, B
FROM T2
GROUP BY A
और इसका लौटा हुआ डेटा सेट समस्या को दर्शाता है:
A T1 B 1 2 13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...? 2 3 13? 42? ...?
हालांकि, निम्नलिखित दो प्रश्न इसे स्पष्ट करते हैं, और इससे त्रुटि नहीं होगी:
-
समुच्चय का उपयोग करना
SELECT A, COUNT(B) AS T1, SUM(B) AS B FROM T2 GROUP BY A
वापस आ जाएगा:
A T1 B 1 2 92 2 3 68
-
कॉलम को
GROUP BY
. में जोड़ना सूचीSELECT A, COUNT(B) AS T1, B FROM T2 GROUP BY A, B
वापस आ जाएगा:
A T1 B 1 1 13 1 1 79 2 2 13 2 1 42