Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:не е в GROUP BY

Трябва да имате пълна група от:

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 |
+------+------+

т.е. произволно y се избира за групата x. Човек може да предотврати това поведение, като зададе @@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. GROUP_CONCAT ПОРЪЧАЙ ОТ

  2. Използване на фрагменти на Oracle JDeveloper с MySQL

  3. PHP PDOException:SQLSTATE[HY093]:Невалиден номер на параметър

  4. Конкатениране на низ и число в MySQL

  5. Как мога да използвам PDO за извличане на масив с резултати в PHP?