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

Синтаксична грешка или нарушение на достъпа:1055 Израз #8 от списъка SELECT не е в клаузата GROUP BY и съдържа неагрегирана колона

Това е ново нещо в MySQL 5.7 и е предупреждение, че вашата заявка е двусмислена.

Разгледайте следната таблица:

id    |   name    |   age    |   points
--------------------------------------------
1         Bob         21         1
2         James       14         1
3         Bob         21         3
4         James       14         2
5         Casey       17         3

Ако сте направили следната заявка:

SELECT name, age, SUM(points) FROM scores GROUP BY name

След това name колона се използва за групиране. Имайте предвид, че age може да има множество стойности, така че е „необобщен“. Трябва да направите нещо, за да свиете тези стойности.

Поведението в 5.6 и предишните беше просто да се избере първият в зависимост от реда на сортиране, въпреки че това понякога беше непредсказуемо и би се провалило. В 5.7 те ви пречат да го направите на първо място.

Решението тук е да групирате и това или да приложите обобщен оператор като MIN() към него.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавя съобщение, което казва $user_id изтрит или $user_id не е намерен?

  2. Моята програма не може да съхранява стойности в MySQL, използвайки mysql конектор lib в Python

  3. PHP MySQL Yii - четене на база данни, а не запис

  4. Как да напиша критерии за хибернация за тази sql заявка?

  5. Мога ли да възстановя една таблица от пълен mysql mysqldump файл?