GROUP BY Null-Behandlung
Bei der Verwendung von GROUP BY zum Aggregieren von Daten ist es wichtig zu berücksichtigen, wie mit NULL-Werten umgegangen wird. Standardmäßig werden NULL-Werte gruppiert und möglicherweise Zeilen mit fehlenden Werten ausgeschlossen.
In diesem Szenario gruppieren Sie Zeilen nach dem Vorfahrenfeld und möchten Zeilen einschließen, in denen Vorfahr NULL ist. Um dies zu erreichen, können Sie eine Problemumgehung nutzen:
SELECT `table1`.*, IFNULL(ancestor, UUID()) AS `unq_ancestor`, GROUP_CONCAT(id SEPARATOR ',') AS `children_ids` FROM `table1` WHERE (enabled = 1) GROUP BY `unq_ancestor`;
Die UUID()-Funktion generiert eine eindeutige Kennung für jede Zeile mit einem NULL-Vorfahrenwert. Dadurch wird sichergestellt, dass Zeilen mit NULL ancestor eine eindeutige Kennung zugewiesen wird, wodurch verhindert wird, dass sie gruppiert werden.
Durch Ersetzen des Ancestor-Felds durch unq_ancestor in der GROUP BY-Klausel gruppiert die Abfrage nun Zeilen basierend auf der eindeutigen Kennung für NULL-Werte und alle Zeilen werden in die Ergebnismenge aufgenommen.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit NULL-Werten in GROUP BY-Klauseln um, um alle Zeilen einzuschließen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!