Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL :nie znajduje się w GROUP BY

Musisz mieć pełną grupę do:

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

SQL92 wymaga, aby wszystkie kolumny (z wyjątkiem agregacji) w klauzuli select były częścią klauzuli group by. SQL99 nieco rozluźnia to ograniczenie i stwierdza, że ​​wszystkie kolumny w klauzuli select muszą być funkcjonalnie zależne od klauzuli group by. MySQL domyślnie pozwala na częściowe grupowanie według, co może dawać niedeterministyczne odpowiedzi, na przykład:

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

Tj. losowy y jest wybierany dla grupy x. Można temu zapobiec, ustawiając @@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. Jak zainstalować phpMyAdmin na zarządzanych kontach hostingowych

  2. Czy wyzwalacz MySQL może symulować ograniczenie CHECK?

  3. Jak podłączyć aplikację na Androida do bazy danych MySQL?

  4. Jak działa MySQL CASE?

  5. Uruchamianie klastra Galera na Kubernetes