Angenommen, ich habe eine einfache Funktion in MySQL:
SELECT SUM(Column_1)
FROM Table
WHERE Column_2 = 'Test'
Wenn keine Einträge in Column_
2 den Text 'Test' enthalten, gibt diese Funktion zurück NULL
, während ich möchte, dass sie 0 zurückgibt .
Ich bin mir bewusst, dass hier einige Male eine ähnliche Frage gestellt wurde, aber ich konnte die Antworten nicht an meine Zwecke anpassen, daher wäre ich dankbar, wenn ich Ihnen dabei helfen könnte, diese Frage zu klären.
Antworten:
Verwenden Sie
COALESCE
diese Option , um dieses Ergebnis zu vermeiden.Um es in Aktion zu sehen, sehen Sie sich bitte diese SQL-Geige an: http://www.sqlfiddle.com/#!2/d1542/3/0
Mehr Informationen:
Gegeben drei Tabellen (eine mit allen Zahlen, eine mit allen Nullen und eine mit einer Mischung):
SQL Fiddle
MySQL 5.5.32 Schema-Setup :
Abfrage 1 :
Ergebnisse :
quelle
SUM
Funktion funktioniert wie gewünscht,AVG
undCOUNT
kann zu unterschiedlichen Ergebnissen beim EmpfangNULL
Auffordern Sie zu verwenden ,COALESCE
wie durch @DarkSide, abhängig von Ihrem gewünschten Ergebnis vorgeschlagen.Verwenden Sie
IFNULL
oderCOALESCE
:Der Unterschied zwischen ihnen besteht darin, dass
IFNULL
es sich um eine MySQL-Erweiterung handelt, die zwei Argumente akzeptiert, undCOALESCE
um eine Standard-SQL-Funktion, die ein oder mehrere Argumente annehmen kann. Wenn Sie nur zwei Argumente haben,IFNULL
ist die Verwendung etwas schneller, obwohl hier der Unterschied unbedeutend ist, da er nur einmal aufgerufen wird.quelle
IFNULL
oderCOALESCE
?? Könntest du es erklären?coalesce
.Ich kann nicht genau das bekommen, was Sie fragen, aber wenn Sie eine aggregierte SUMME-Funktion verwenden, die impliziert, dass Sie die Tabelle gruppieren.
Die Abfrage geht für MYSQL wie folgt
quelle