Mysql
 sql >> Database >  >> RDS >> Mysql

Errore di sintassi o violazione di accesso:1055 L'espressione n. 8 dell'elenco SELECT non è nella clausola GROUP BY e contiene una colonna non aggregata

Questa è una novità in MySQL 5.7 ed è un avvertimento che la tua query è ambigua.

Considera la seguente tabella:

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

Se hai fatto la seguente query:

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

Quindi il name colonna viene utilizzata per il raggruppamento. Nota che age può avere più valori, quindi è "non aggregato". Devi fare qualcosa per ridurre quei valori.

Il comportamento in 5.6 e precedenti consisteva nel selezionare il primo in base all'ordinamento, anche se a volte era imprevedibile e falliva. In 5.7 ti stanno impedendo di farlo in primo luogo.

La soluzione qui è raggruppare anche questo o applicare un operatore aggregato come MIN() ad esso.