2016-04-12 10 views
0

Beim Versuch, MySQL-Abfrage in MsSQL-Abfrage zu konvertieren endet in Schwierigkeiten.MySQL GROUP BY-Fehler in SQL Server

Fehler besagen, dass:

Spalte ‚books.id‘ in der Auswahlliste ungültig ist, weil es in einer Aggregatfunktion oder die GROUP BY-Klausel nicht enthalten ist.

Dieser Code saugt.

SELECT * FROM books group by books.category_id 

Als Referenz sqlfiddle.com/#!3/4ed19/22

Vielen Dank im Voraus !!

+3

Die allgemeine GROUP BY-Regel zu erfüllen, sagt: „Wenn eine GROUP BY-Klausel jeder Spalte Verweis angegeben wird, in Die SELECT-Liste muss entweder eine Gruppierungsspalte identifizieren oder das Argument einer Set-Funktion sein. " – jarlh

+0

Zeigen Sie uns einige Beispieltabellendaten und das erwartete Ergebnis! – jarlh

+3

MySQL gibt einfach eine zufällige Zeile zurück und Sie werden feststellen, dass jedes andere DBMS eine ähnliche Fehlermeldung zurückgibt. Sie müssen entscheiden, welche * Zeile zurückgeben soll. Willkommen in der Welt von * Real SQL * :) – dnoeth

Antwort

1

Der Projektionsbereich für diese SQL-Abfrage muss ein Aggregat für eine andere Spalte als die Spalte haben, die Sie für die Gruppe verwenden.

Wie Sie sehen können, enthält die Projektion colA, auf dem die Gruppierung vorgenommen wurde. Die andere in der Projektion verwendete Spalte wird zusammen mit einer Aggregatfunktion verwendet.

Versuchen Sie nicht * zu verwenden, da es Sie bitten, ein Aggregat bei den restlichen Spalten außer books.category_id

+0

Nehmen wir an 3 Bücher mit der gleichen category_id nehmen wir sagen 2. Wie gehst du damit..? – Rishi

+0

Hängt davon ab, was Sie mit groupby erreichen möchten. Wenn drei Bücher dieselbe category_id haben, müssen Sie entscheiden, ob Sie ihren Preis summieren möchten oder ob Sie die Anzahl anzeigen möchten oder ob Sie den Höchstpreis unter den dreien anzeigen möchten. Wenn Sie Ihre Anforderung hier erklären können, dann können wir vielleicht helfen. – Vipul

+1

Betrachten Bücher Tabelle {id name category_id} {1 A 1} {2 B 1} {3 C 2} ich durch die Gruppierung der category_id – Rishi