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

MySQL:ग्रुप बाय में नहीं है

आपके पास एक पूरा समूह होना चाहिए:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25

SQL92 के लिए आवश्यक है कि चयन खंड में सभी कॉलम (समुच्चय को छोड़कर) समूह द्वारा खंड का हिस्सा हों। SQL99 इस प्रतिबंध को थोड़ा कम करता है और बताता है कि चुनिंदा क्लॉज के सभी कॉलम क्लॉज द्वारा समूह पर कार्यात्मक रूप से निर्भर होने चाहिए। MySQL डिफ़ॉल्ट रूप से आंशिक समूह के लिए अनुमति देता है और यह गैर-नियतात्मक उत्तर उत्पन्न कर सकता है, उदाहरण:

create table t (x int, y int);
insert into t (x,y) values (1,1),(1,2),(1,3);
select x,y from t group by x;
+------+------+
| x    | y    |
+------+------+
|    1 |    1 |
+------+------+

अर्थात। समूह x के लिए एक यादृच्छिक y का चयन किया जाता है। @@sql_mode सेट करके इस व्यवहार को रोका जा सकता है:

set @@sql_mode='ONLY_FULL_GROUP_BY';
select x,y from t group by x; 
ERROR 1055 (42000): 'test.t.y' isn't in GROUP BY


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक तैयार स्टेटमेंट, `WHERE .. IN(..)` क्वेरी और सॉर्टिंग — MySQL के साथ

  2. MySQL त्रुटि 1264:स्तंभ के लिए सीमा मान से बाहर

  3. MySQL में एकाधिक कॉलम कैसे अपडेट करें

  4. CentOS 6 पर phpMyAdmin को कैसे स्थापित और कॉन्फ़िगर करें?

  5. MySQL सबक्वेरी के साथ कैसे काम करें