So rufen Sie „0“ aus der SUM-Funktion von MySQL ab, wenn keine Werte vorhanden sind
Die SUM-Funktion in MySQL bietet eine praktische Möglichkeit, numerische Werte zu aggregieren Werte. Wenn jedoch während der Abfrage keine übereinstimmenden Zeilen gefunden werden, gibt die SUM-Funktion normalerweise einen NULL-Wert zurück. Für einige Anwendungsfälle kann es wünschenswerter sein, „0“ anstelle von NULL zurückzugeben.
Verwendung von COALESCE zur Lösung des Problems
Die Lösung für dieses Problem liegt in die COALESCE-Funktion. Mit COALESCE können Sie einen Standardwert angeben, der zurückgegeben wird, wenn das erste Argument NULL ergibt.
Betrachten Sie das folgende Beispiel:
SELECT COALESCE(SUM(Column_1),0) FROM Table WHERE Column_2 = 'Test'
In dieser Abfrage umschließt COALESCE die SUM-Funktion. Wenn die SUMME von Spalte_1 für Zeilen, in denen Spalte_2 gleich „Test“ ist, einen NULL-Wert zurückgibt, liefert COALESCE stattdessen „0“.
Demonstration und weitere Informationen
Besuchen Sie http ://www.sqlfiddle.com/#!2/d1542/3/0 für eine Live-Demonstration der Lösung.
Um tiefer in die Nuancen von COALESCE einzutauchen, betrachten Sie das folgende Szenario mit drei Tabellen mit unterschiedlichen Wertverteilungen:
Durch Anwenden der folgenden Abfrage:
SELECT 'foo' as table_name, 'mixed null/non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM foo UNION ALL SELECT 'bar' as table_name, 'all non-null' as description, 21 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM bar UNION ALL SELECT 'baz' as table_name, 'all null' as description, 0 as expected_sum, COALESCE(SUM(val), 0) as actual_sum FROM baz
Sie erhalten die folgenden Ergebnisse:
TABLE_NAME | DESCRIPTION | EXPECTED_SUM | ACTUAL_SUM |
---|---|---|---|
foo | mixed null/non-null | 21 | 21 |
bar | all non-null | 21 | 21 |
baz | all null | 0 | 0 |
As Sie können beobachten, dass die COALESCE-Funktion effizient „0“ für die „baz“-Tabelle zurückgibt, in der alle Werte NULL sind.
Das obige ist der detaillierte Inhalt vonWie kann ich „0' anstelle von NULL zurückgeben, wenn ich die SUM-Funktion von MySQL für leere Datensätze verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!