Heim >Datenbank >MySQL-Tutorial >Wie schließe ich NULL-Werte aus GROUP BY-Abfragen aus und behalte dabei alle Zeilen bei?

Wie schließe ich NULL-Werte aus GROUP BY-Abfragen aus und behalte dabei alle Zeilen bei?

DDD
DDDOriginal
2024-12-24 09:13:54158Durchsuche

How to Exclude NULL Values from GROUP BY Queries While Preserving All Rows?

GROUP BY-Abfrage, die NULL-Werte ausschließt

Wenn Sie die GROUP BY-Funktion zum Aggregieren von Daten verwenden, kann es vorkommen, dass Sie ein Szenario ausschließen müssen NULL-Werte aus der Gruppierungsoperation. Dies tritt normalerweise auf, wenn Sie alle Zeilen mit NULL-Werten im angegebenen Feld beibehalten möchten.

Um dies zu erreichen, besteht ein Ansatz darin, NULL-Werte durch einen eindeutigen Bezeichner zu ersetzen. Dies kann mit der Funktion IFNULL() erfolgen:

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 diesem Beispiel ersetzen wir NULL-Vorfahren durch einen eindeutigen UUID()-Wert. Dadurch wird sichergestellt, dass NULL-Vorfahren nicht gruppiert werden und die Abfrage alle Zeilen unabhängig von ihrem Vorfahrenfeldwert zurückgibt.

Das obige ist der detaillierte Inhalt vonWie schließe ich NULL-Werte aus GROUP BY-Abfragen aus und behalte dabei alle Zeilen bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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