Heim > Datenbank > MySQL-Tutorial > Wie behebe ich den MySQL-Fehler „Ungültige Verwendung der Gruppenfunktion' in einer Unterabfrage?

Wie behebe ich den MySQL-Fehler „Ungültige Verwendung der Gruppenfunktion' in einer Unterabfrage?

Barbara Streisand
Freigeben: 2025-01-11 22:38:46
Original
858 Leute haben es durchsucht

How to Fix MySQL's

Debugging des MySQL-Fehlers „Ungültige Verwendung der Gruppenfunktion“

Problem:

Eine Abfrage zur Identifizierung von Teilen, die von mindestens zwei Lieferanten geliefert wurden, ergab den Fehler „Ungültige Verwendung der Gruppenfunktion“:

<code class="language-sql">SELECT c1.pid                      -- Select part ID (pid)
FROM Catalog AS c1                 -- From the Catalog table
WHERE c1.pid IN (                  -- Where pid is in the set:
    SELECT c2.pid                  -- Of pids
    FROM Catalog AS c2             -- From the Catalog table
    WHERE c2.pid = c1.pid AND COUNT(c2.sid) >= 2 -- Incorrect: COUNT in WHERE clause
);</code>
Nach dem Login kopieren

Das Problem:

Der Fehler ist auf die falsche Platzierung der Funktion COUNT() zurückzuführen. Die WHERE-Klausel filtert einzelne Zeilen vor der Gruppierung, wodurch die Aggregatfunktion COUNT() in diesem Kontext ungültig wird.

Lösung:

Der richtige Ansatz beinhaltet die Verwendung der HAVING-Klausel, die nach Gruppierung und Aggregation filtert:

<code class="language-sql">SELECT c1.pid
FROM Catalog AS c1
WHERE c1.pid IN (
    SELECT c2.pid
    FROM Catalog AS c2
    GROUP BY c2.pid
    HAVING COUNT(c2.sid) >= 2
);</code>
Nach dem Login kopieren

Erklärung:

Die überarbeitete Abfrage gruppiert die Catalog-Tabelle nach pid mithilfe von GROUP BY c2.pid. Die HAVING-Klausel filtert dann diese Gruppen und behält nur diejenigen bei, bei denen die Anzahl der Lieferanten-IDs (sid) größer oder gleich zwei ist. Dadurch werden Teile mit mindestens zwei Lieferanten korrekt identifiziert. Die äußere Abfrage wählt dann die pid-Werte aus diesen gefilterten Gruppen aus.

Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „Ungültige Verwendung der Gruppenfunktion' in einer Unterabfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage