2016-08-08 23 views
-1

muss in der GROUP BY-Klausel erscheinen oderWarum tritt der folgende Fehler nur in PGSQL und nicht in MYSQL auf?

ich innere tue in einer Aggregatfunktion verwendet werden, kommen zwischen zwei Tabellen und verwendet eine der Fremdschlüssel in Basistabelle innerhalb der Gruppe durch und der obige Fehler war geworfen. Aber es funktioniert gut in MYSQL

+0

müssen einige hinzufügen Code, muss Beispieldaten hinzufügen, muss die Tour lesen: http://StackOverflow.com/Tour –

+3

Da MySQL für einige Gott-Verlassenen Grund ermöglicht das Fehlen von nicht-aggregierten Spalten in der Klausel 'GROUP BY'. Sie sollten niemals eine Spalte aus einer GROUP BY herauslassen, die nicht aggregiert ist, da dies zu merkwürdigen Ergebnissen in MySQL und (zu Recht) zu einem Fehler in jedem anderen DBMS führen wird. – Siyual

+1

Beachten Sie, dass neuere MySQL-Versionen strenger sind. (Ie.e viele inkompatible MySQL-Anwendungen da draußen ...) – jarlh

Antwort

2

Ich glaube, Sie mysql sprechen < 5.7 ist dies ein nicht standardmäßig in mysql, die sie beseitigte MySQL 5.7

Bitte sehen: https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by

sqlmode_only_full_group_by Ablehnen von Abfragen, für die sich die SELECT-Liste, HAVING-Bedingung oder ORDER BY-Liste auf nicht aggregierte Spalten beziehen, die weder in der GROUP BY-Klausel benannt sind noch funktional sind ndent on (eindeutig bestimmt von) GROUP BY Spalten.

Ab MySQL 5.7.5 enthält der SQL-Standardmodus ONLY_FULL_GROUP_BY. (vor 5.7.5, ist MySQL nicht erkennen funktionale Abhängigkeit und ONLY_FULL_GROUP_BY ist standardmäßig nicht aktiviert. Eine Beschreibung pre-5.7.5 Verhalten finden Sie im MySQL 5.6 Reference Manual.)