Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum brauche ich OR NULL in MySQL, wenn ich Zeilen mit einer Bedingung zähle?

Dies sollte alles anzeigen

SELECT 4=4, 3=4, 1 or null, 0 or null

Ausgabe

1   |   0   |   1   |   NULL

Fakten

  1. COUNT addiert die Spalten/Ausdrücke, die NOT NULL ergeben. Alles wird um 1 erhöht, solange es nicht null ist. Ausnahme ist COUNT(DISTINCT), wo es nur erhöht wird, wenn es nicht bereits gezählt wird.

  2. Wenn ein BOOLEAN-Ausdruck allein verwendet wird, gibt er entweder 1 oder 0 zurück.

  3. Wenn ein boolescher Wert OR ist -ed mit NULL, es ist nur NULL, wenn es 0 (falsch) ist

An andere

Ja, wenn die Anzahl die EINZIGE gewünschte Spalte ist, könnte man WHERE value=4 verwenden aber wenn es sich um eine Abfrage handelt, die die 4er sowie zählen möchte Wenn Sie andere Zählungen/Aggregate abrufen, funktioniert der Filter nicht. Eine Alternative wäre SUM(value=4) gewesen , z. B.

SELECT sum(value=4)
  FROM test