sql >> Databáze >  >> RDS >> Mysql

Chyba syntaxe nebo porušení přístupu:1055 Výraz #8 seznamu SELECT není v klauzuli GROUP BY a obsahuje neagregovaný sloupec

Toto je nová věc v MySQL 5.7 a je to varování, že váš dotaz je nejednoznačný.

Zvažte následující tabulku:

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

Pokud jste provedli následující dotaz:

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

Poté name sloupec se používá pro seskupování. Všimněte si, že age může mít více hodnot, takže je „neagregovaný“. Musíte něco udělat, abyste tyto hodnoty zhroutili.

Chování ve verzi 5.6 a předchozích bylo pouze vybrat první v závislosti na pořadí řazení, i když to bylo někdy nepředvídatelné a selhalo. Ve verzi 5.7 vám v tom především brání.

Řešením je seskupit to také nebo použít agregační operátor jako MIN() k tomu.



  1. Zkontrolujte, zda existuje, pokud ano, aktualizujte o 1++, pokud ne, vložte

  2. Převést výsledky dotazu mysql na CSV (s kopírováním/vkládáním)

  3. Výkonnostní překvapení a předpoklady:DATEADD

  4. Co potřebuji ke spuštění SQL?