GROUP BY: NULL-Werte ignorieren
In der Datenbankverwaltung dient die GROUP BY-Funktion dazu, Zeilen basierend auf ähnlichen Werten in einer bestimmten Spalte zu gruppieren oder Spalten. Allerdings werden NULL-Werte als eigenständige Gruppe behandelt, was möglicherweise zu unbeabsichtigten Ergebnissen führt, wenn NULL-Felder gefunden werden.
Betrachten Sie die folgende Abfrage:
SELECT `table1`.*, GROUP_CONCAT(id SEPARATOR ',') AS `children_ids` FROM `table1` WHERE (enabled = 1) GROUP BY `ancestor`
Angenommen, es gibt fünf Zeilen in Tabelle1 mit Wenn das Vorfahrenfeld auf NULL gesetzt ist, gibt die Abfrage nur eine Zeile zurück, während das gewünschte Ergebnis darin besteht, alle fünf abzurufen Zeilen.
Um dieses Problem zu lösen, können wir eine Strategie anwenden, die NULL-Werte durch die Einführung einer eindeutigen Kennung unterscheidet. Hier ist ein Beispiel:
SELECT `table1`.*, IFNULL(ancestor,UUID()) as unq_ancestor GROUP_CONCAT(id SEPARATOR ',') AS `children_ids` FROM `table1` WHERE (enabled = 1) GROUP BY unq_ancestor
In dieser modifizierten Abfrage verwenden wir die Funktion IFNULL(), um NULL-Werten in der Vorfahrenspalte UUIDs (Universally Unique Identifiers) zuzuweisen. Auf diese Weise erstellen wir eine eindeutige Kennung für jede Zeile, wodurch NULL-Werte effektiv unterschieden und gruppiert werden können. Dadurch wird sichergestellt, dass alle Zeilen im Ergebnissatz zurückgegeben werden, unabhängig davon, ob das Vorfahrenfeld NULL ist oder nicht.
Das obige ist der detaillierte Inhalt vonWie kann ich verhindern, dass NULL-Werte unerwartete Gruppen in der GROUP BY-Klausel von MySQL erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!