2012-09-20 13 views
7

मुझे एक अजीब त्रुटि है। मेरे पास एसक्यूएल कोड है जो दिखता है:एसयूएम() सभी परिणाम (खंड द्वारा कोई समूह नहीं)

SELECT 
    adverse_reaction_type_id, 
    SUM(CASE adverse_reaction_type_id WHEN 1 THEN `number` ELSE 0 END) line, 
    SUM(CASE adverse_reaction_type_id WHEN 2 THEN `number` ELSE 0 END) drug 
FROM 
    core_reports_adverse_reactions, 
    ... 
WHERE 
    ... 

यह मेरे एमएएमपी स्थापना पर ठीक काम करता है, लेकिन मेरे रिमोट सर्वर पर नहीं है। मुझे लगता है कि कहीं एक कॉन्फ़िगरेशन विकल्प है जो इसे काम करने से रोक रहा है।

यह त्रुटि मैं हो रही है: कोई ग्रुप कॉलम के साथ

ग्रुप कॉलम के मिश्रण (न्यूनतम(), मैक्स(), COUNT(), ...) अगर वहाँ अवैध है खंड

द्वारा कोई ग्रुप मुझे पता है कि त्रुटि मुझे बता रहा है, लेकिन समस्या यह है कि मैं नहीं समूह के लिए कुछ भी द्वारा चाहते हैं। मैं उन सभी परिणामों को प्राप्त करना चाहता हूं जहां कहां बिट (ब्रेवटी के लिए ऊपर हटाया गया) मैचों और फिर कॉलम के SUM() (line या drugCASE क्लॉज के आधार पर) लौटाएं।

तो अनिवार्य रूप से, क्या मिलान किया जाता हैWHERE सब मैं वापस करना चाहते खंड द्वारा की परवाह किए बिना पंक्ति है:

line | drug 
----------- 
10 | 32 

बिल्कुल इस के चारों ओर एक रास्ता है? या किसी भी तरह से मैं GROUP BY nothing या कुछ कर सकता हूँ?

+1

पोस्टिंग है, क्योंकि यह केवल एक आंशिक जवाब है: इस त्रुटि केवल हो सकता है आप 'ONLY_FULL_GROUP_BY' एसक्यूएल-मोड सक्षम किया हुआ है, तो (देखें [http://dev.mysql.com/doc/refman/5.6/ en/group-by-hidden-column.html] (http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html)), इसलिए आपके एमएएमपी स्थापना के बीच का अंतर और आपका रिमोट सर्वर बस यह हो सकता है कि आपके पास एमएएमपी इंस्टॉलेशन पर SQL-मोड सक्षम नहीं है। – ruakh

उत्तर

7

आप GROUP तालिका पर निरंतर रह सकते हैं जहां आप SELECT चलाते हैं।

उदाहरण GROUP BY NULL के लिए:

mysql> select SUM(CASE WHEN product_id = 0 THEN -1 ELSE product_id END) AS sumprod, SUM(quantity) AS sumquant FROM orders GROUP BY NULL; 
+---------+----------+ 
| sumprod | sumquant | 
+---------+----------+ 
|  4 |  8 | 
+---------+----------+ 
1 row in set (0.00 sec) 

mysql> select version(); 
+-------------+ 
| version() | 
+-------------+ 
| 5.5.25a-log | 
+-------------+ 
1 row in set (0.00 sec) 

लेकिन आम तौर पर इस त्रुटि का अर्थ है कि वहाँ कम से कम एक स्तंभ जो है नहीं वर्गीकृत किया।

यह हो सकता है कि MySQL का उत्पादन संस्करण कुल कार्य के भीतर किसी CASE के उपयोग से अचंभित हो जाए। एक टिप्पणी के रूप

+0

आह, मैं देखता हूं कि आपका क्या मतलब है, और यह त्रुटि को समझ में आता है। मैंने वास्तव में इसे अधिक पठनीय बनाने के लिए बड़ी एसक्यूएल क्वेरी काट दिया था और कुछ प्रासंगिक "कॉलम" को हटा दिया था जो सोचते थे कि वे प्रासंगिक हैं। मैंने सवाल फिर से कर दिया है, लेकिन अब मैंने अपनी मुख्य क्वेरी से 'id' फ़ील्ड लिया है और यह ठीक काम करता है! :) धन्यवाद! –

+0

जब मैं कर सकता हूं मैं स्वीकार करूंगा;) –

+0

यह कोई स्थिर नहीं है। यह एक पूर्णांक नहीं हो सकता है। –

संबंधित मुद्दे